Your personal roadmap through US immigration bureaucracy. Built for international students.
Make sure you have these installed:
- Node.js (v18 or higher) — check with
node --version - npm — check with
npm --version - VS Code — download at code.visualstudio.com
If you don't have Node.js, download it from nodejs.org (LTS version).
- Go to https://console.groq.com
- Sign up with your Google or GitHub account (free)
- Click "API Keys" in the left sidebar
- Click "Create API Key"
- Copy the key — you'll need it in Step 4
- Unzip the
landed.zipfile you downloaded - Open VS Code
- Go to File → Open Folder
- Select the
landedfolder - Open the integrated terminal: Terminal → New Terminal
In the VS Code terminal, run:
cp .env.example .env.localThen open .env.local and replace your_groq_api_key_here with your actual Groq API key:
GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxx
Save the file. Never share this file or commit it to GitHub.
In the terminal, run:
npm installThis installs all required packages. Takes about 1-2 minutes.
npm run devYou should see:
▲ Next.js 14.2.5
- Local: http://localhost:3000
Go to http://localhost:3000 in your browser.
You should see the Landed intake form. Fill in your details and click "Build my roadmap."
- Intake form — you answer 6 questions about your visa situation
- Groq AI — reasons over your answers and maps your dependency graph
- Dashboard — shows your personalized action plan with:
- Deadline countdown timers (turns red when urgent)
- Steps you can do right now (blue)
- Steps that are blocked (gray, with reason)
- Step drawer — click any step to get a plain-English explanation
- Draft helper — generates ready-to-send emails for DSOs, landlords, banks
landed/
├── app/
│ ├── page.tsx # intake form
│ ├── dashboard/page.tsx # main dashboard
│ └── api/
│ ├── generate-plan/ # Claude call: intake → plan
│ ├── explain-step/ # Claude call: step explanation (streaming)
│ └── draft-message/ # Claude call: email drafts (streaming)
├── components/
│ ├── DeadlineCard.tsx # countdown timer cards
│ ├── StepCard.tsx # individual step cards
│ └── StepDrawer.tsx # side drawer with explanation + drafts
├── lib/
│ ├── types.ts # TypeScript interfaces
│ └── deadlines.ts # deadline calculator (pure JS)
└── data/
└── f1-steps.json # F-1 visa knowledge base
- Create a new file:
data/h1b-steps.json(same structure as f1-steps.json) - In
app/api/generate-plan/route.ts, import it and add logic:
import h1bSteps from '@/data/h1b-steps.json'
const steps = profile.visa_type === 'H-1B' ? h1bSteps : f1Stepsnpm install -g vercel
vercelFollow the prompts. When asked about environment variables, add your GROQ_API_KEY.
Your app will be live at a vercel.app URL in under 2 minutes.
"Module not found" error
→ Run npm install again
"Invalid API key" error
→ Check your .env.local file — make sure there are no spaces around the =
Blank dashboard / no steps → Open browser DevTools → Console and check for errors. Usually a JSON parse issue.
Groq rate limit → Free tier allows 30 requests/minute. More than enough for development.
- Next.js 14 — React framework with App Router
- Tailwind CSS — styling
- Groq SDK — AI API (llama-3.3-70b-versatile model, free tier)
- TypeScript — type safety
- Lucide React — icons
- Vercel — deployment (optional)
- Create a Supabase project.
- In Supabase Auth, enable Email and Google providers.
- Add your local site URL (
http://localhost:3000) to the allowed redirect URLs. - Copy
.env.examplevalues into.env.localand fill in your Supabase keys. - Run the SQL in
supabase-schema.sqlinside the Supabase SQL editor.
Once configured, users can sign in with a magic link or Google and save their roadmap across devices.