Skip to content

Repository files navigation

πŸͺΊ InternNest

Your city. Your internship. Your people.

Find subleases, navigate transit, and connect with fellow interns β€” all in one place. Built for interns, by interns.

Next.js React TypeScript Supabase Cloudflare Pages PWA


The Problem

College students doing 8–12 week internships in unfamiliar cities have to find short-term housing on their own. It's stressful, time-consuming, and isolating β€” and generic listing sites aren't built for sublease-length stays, for trusting a stranger sight-unseen, or for the social side of moving somewhere new alone.

Validated with 50 customer-discovery interviews (students across MIT, Stanford, Georgia Tech, UT, and more β€” plus 30 companies). See docs/design-doc.md.

The Solution

InternNest connects interns with verified short-term listings and a community of peers in the same city, so they can focus on the internship instead of the logistics.


✨ Features

Feature Description
πŸ™οΈ City hub Pick your internship city; see avg rent, listing count, and community size at a glance. Covers SF, NYC, Boston, Chicago, Atlanta, Seattle, LA, and DC.
🏠 Housing Verified sublease listings with price, dates, amenities, commute-to-company, neighborhood, and poster β€” filterable by size, area, and budget.
🏘️ Neighborhoods Per-city neighborhood guides: vibe, avg rent, commute/safety/walkability scores, and what each is best for.
πŸš‡ Transit How to get around each city β€” modes, costs, and intern tips.
πŸ‘₯ Community A verified-intern Discord (city channels for housing, roommates, transit & meetups) plus local interest groups.
πŸ“ Sign-up / onboarding Quick-start profile (school .edu email, city, company, dates, budget) to personalize matches.
βœ… Trust-first Verified-student model, verification badges, and "never pay off-platform" guardrails baked into the design.

🧱 Tech Stack

Layer Choice
Framework Next.js 14 (App Router) β€” built as a static export (output: "export")
Language TypeScript
UI React 18; Tailwind + inline styles; Leaflet for maps
Backend Supabase β€” Auth (.edu verification), Postgres (listings/profiles), Storage (lease/photo uploads). Talks to it directly from the client; no custom server.
Fallback Built-in lib/fallback-data.ts so the app runs with zero backend config
Hosting Cloudflare Pages (static) β€” live at internnest-web.pages.dev
App Installable PWA (add to home screen, full-screen, app icon)

πŸš€ Getting Started

# clone
gh repo clone NhiTech/internnest-web
cd internnest-web

# install
npm install

# run (works with no database β€” uses fallback data)
npm run dev

Open http://localhost:3000.

Optional: connect Supabase

The app runs on bundled fallback data out of the box. To use a live database, add a .env.local:

NEXT_PUBLIC_SUPABASE_URL=your-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key

If these aren't set, lib/data.ts automatically falls back to lib/fallback-data.ts β€” so nothing breaks.

πŸ—„οΈ Backend

There's no custom server β€” the static frontend talks directly to Supabase:

  • Auth β€” .edu verification via email OTP (6-digit code).
  • Postgres β€” listings, and (planned) profiles / inquiries. See docs/supabase-setup.md for the schema + RLS.
  • Storage β€” buckets for listing photos and (private) lease documents.

Until the tables exist, listings/profiles live in the browser (localStorage) and cities/neighborhoods come from the fallback data.

☁️ Deploy (Cloudflare Pages)

Static export hosted on Cloudflare Pages:


πŸ“ Project Structure

internnest-web/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ layout.tsx        # root layout + metadata
β”‚   β”œβ”€β”€ page.tsx          # home: city selector, stats, and the 4 tabs
β”‚   └── signup/page.tsx   # sign-up / onboarding flow
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ data.ts           # data access (Supabase β†’ fallback)
β”‚   β”œβ”€β”€ supabase.ts       # Supabase client (null when unconfigured)
β”‚   └── fallback-data.ts  # cities, listings, neighborhoods, transit, groups
β”œβ”€β”€ docs/
β”‚   └── design-doc.md     # full product & technical design doc
└── discord-setup/
    β”œβ”€β”€ setup.mjs         # one-command builder for the InternNest Discord
    └── README.md         # Discord setup instructions

πŸ’¬ Discord Community

A moderated, verified-interns-only Discord organized by city (channels for housing, roommates, transit, neighborhoods, and social) with a scam-guard AutoMod rule. The discord-setup/ folder has an idempotent setup.mjs script that builds the whole server structure in one run.

⚠️ Update DISCORD_INVITE in app/page.tsx with your real server invite link.


πŸ—ΊοΈ Roadmap

  • Core browse experience (cities, listings + filters, neighborhoods, transit, community)
  • Sign-up / onboarding form
  • Discord community + setup script
  • Supabase Auth with .edu verification wired to sign-up
  • Post-a-Listing write path (verified students only)
  • Save / favorites (per-user)
  • Roommate matching (lifestyle-based)
  • Employer (B2B) outreach with real usage data

See docs/design-doc.md for the full plan, customer discovery, business model, and trust/safety design.


InternNest Β· Built for interns, by interns πŸͺΊ

About

πŸͺΊ InternNest β€” housing + community platform for interns. Verified subleases, neighborhood/transit guides, and a city-based intern community. Next.js + TypeScript + Supabase. Live β†’ internnest-web.pages.dev

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages