SideQuestHQ is a warm, story-driven platform that helps builders track every side projectβlaunched, paused, abandoned, or shipped. It combines a beautiful dashboard, sepia-tinted graveyard mode, and public portfolio profiles so makers can celebrate progress, learn from patterns, and honor every idea.
Not every project ships. Every project still matters. π―οΈ
- π―οΈ Graveyard Mode β Tombstone cards with Why I Stopped and What I Learned
- π GitHub Smart Import β Auto-detected tech stacks from package.json, requirements.txt, etc.
- π Portfolio Profiles β Public portfolio pages at
/username - π Secure API Architecture β All data flows through Next.js API routes (DB URLs hidden from client)
- β‘ Smart Dashboard Updates β Optimistic updates + automatic refresh after edit/create/delete
- π Custom JWT Authentication β Secure cookie-based sessions with GitHub OAuth
- Rich card layout with tech stack, description, and progress percentage
- Statuses: Active, Paused, Shipped, Abandoned
- Search and filter by status or tech stack
- Sort options for organization
- Sepia-toned memorial board for abandoned projects
- Animated tombstone cards
- Fields for Why I Stopped and What I Learned
- Dedicated graveyard view with dark theme
- OAuth login with GitHub
- Automatic tech stack detection from:
- package.json (Node.js projects)
- requirements.txt (Python)
- go.mod, Cargo.toml, and more
- Import multiple repositories at once
- Auto-suggest "abandoned" status for inactive repos (6+ months)
- Clean portfolio layout at
/username - Maker bio and project showcase
- Public/private controls per project
- Stats overview (total, active, paused, shipped, graveyard)
- Filter projects by status on public profile
- Status breakdown with counts
- Tech stack frequency analysis
- Visual stats overview on dashboard
- Per-project progress tracking
- Next.js 15 App Router with TypeScript
- Secure API Layer β All database operations through Next.js API routes
- Custom JWT Sessions β Cookie-based authentication with jose
- Optimistic Updates β Instant UI feedback with automatic data refresh
- Smart Landing Page β Auth-aware navigation (login vs dashboard)
- Supabase for database, storage, and OAuth provider
- TanStack Query v5 for server state management
- React Hook Form + Zod for type-safe forms
- shadcn/ui component library (20+ components)
- Framer Motion for animations
- Tailwind CSS with custom warm neutral theme
- Database URLs hidden from client (API proxy layer)
- Row Level Security (RLS) policies on Supabase
- Middleware-based route protection
- Force refetch ensures dashboard always shows fresh data
- No direct client-side Supabase queries
- Warm cream + amber palette with rich brown text
- Sepia overlays and deep purple accents for graveyard
- Inter font (sans-serif) with JetBrains Mono for code
- Animated status badges with hover states
- Smooth page transitions
- Loading states with skeleton screens
- Toast notifications for user feedback
- Semantic HTML structure
- ARIA labels for interactive elements
- Keyboard navigation support
- Clear visual hierarchy
- Sign in with GitHub OAuth
- Import projects from GitHub or add manually
- Track progress with status updates and notes
- Move to graveyard when abandoning, with context
- Reflect and document what you learned
- Publish your public portfolio at
/username - Edit and update projects as they evolve
| Category | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Language | TypeScript 5 |
| UI | Tailwind CSS + shadcn/ui |
| State | TanStack Query v5 |
| Backend | Next.js API Routes + Supabase |
| Database | Supabase (PostgreSQL) |
| Auth | Custom JWT + GitHub OAuth |
| Animations | Framer Motion |
| Forms | React Hook Form + Zod |
| Deployment | Vercel |
git clone https://github.com/akshadjaiswal/sidequesthq.git
cd sidequesthq/frontend
npm installCreate .env.local:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
NEXT_PUBLIC_APP_URL=http://localhost:3000
SESSION_SECRET=your-random-secret-key- Create a Supabase project
- Run the SQL schema from
my_docs/mvp.md - Enable GitHub OAuth in Supabase Auth settings
- Configure RLS policies
npm run devVisit http://localhost:3000
frontend/
βββ app/
β βββ (auth)/login/ # GitHub OAuth login
β βββ (dashboard)/ # Protected routes
β β βββ dashboard/ # Main project gallery
β β βββ graveyard/ # Abandoned projects view
β β βββ projects/[id]/ # Project detail & edit
β β βββ settings/ # User settings
β βββ [username]/ # Public profile
β βββ api/ # API routes
β β βββ auth/ # Session management
β β βββ projects/ # Project CRUD
β β βββ stats/ # Profile stats
β βββ page.tsx # Landing page
βββ components/
β βββ dashboard/ # Dashboard components
β βββ projects/ # Project components
β βββ graveyard/ # Graveyard components
β βββ github/ # GitHub import
β βββ landing/ # Landing page
β βββ ui/ # shadcn/ui components
βββ hooks/
β βββ use-projects.ts # Project data hooks
β βββ use-session.ts # Auth session hook
β βββ use-auth-redirect.ts # Smart navigation
βββ lib/
β βββ auth/ # JWT session management
β βββ supabase/ # Supabase clients & API wrappers
β βββ validations/ # Zod schemas
βββ types/ # TypeScript types
Client Component
β
TanStack Query Hook
β
Fetch API Call (/api/projects)
β
Next.js API Route
β
Verify JWT Session
β
Server-side Supabase Client
β
PostgreSQL Database
- User authenticates with GitHub OAuth
- App fetches user's repositories
- Automatically detects tech stack from repo files
- Suggests status based on last commit date
- User selects repos to import
- Projects created in database
- Filter projects with "abandoned" status
- Apply sepia theme with dark purple accents
- Display tombstone-style cards
- Show reflection fields (Why stopped, What learned)
- Push repo to GitHub
- Import project in Vercel
- Add environment variables
- Deploy automatically
- Update GitHub OAuth callback URL to production domain
- Update
NEXT_PUBLIC_APP_URLin environment variables - Test authentication flow
- Enable ISR for public profiles (optional)
PRs welcome!
Guidelines:
- Use TypeScript for all new code
- Follow existing code style (Prettier + ESLint)
- Test thoroughly before submitting
- Write clear commit messages
- Update documentation as needed
MIT License - see LICENSE file for details.
- Bugs β Open an issue
- Ideas β Start a discussion