A modern, full-stack platform connecting students with flexible gig opportunities. Built with Next.js 16 (frontend) and FastAPI (backend).
shift/
βββ shift-frontend/ # Next.js frontend application
β βββ app/
β β βββ layout.tsx # Root layout
β β βββ page.tsx # Landing page
β β βββ globals.css # Global styles & design tokens
β β βββ [routes]/ # Page routes
β βββ components/ # Reusable UI components
β βββ lib/
β β βββ store/ # Zustand state management
β β βββ api/ # API client
β β βββ utils/ # Utilities
β βββ public/ # Static assets
β βββ next.config.mjs # Next.js configuration
β βββ package.json
βββ shift-backend/ # FastAPI backend
β βββ app/
β β βββ api/ # API route handlers
β β βββ models.py # Database models
β β βββ schemas.py # Pydantic schemas
β β βββ security.py # Auth & security
β β βββ config.py # Configuration
β βββ main.py # FastAPI app entry
β βββ requirements.txt
βββ README.md
- Primary: Electric Green (#22C55E)
- Accent: Neon Orange (#FF6B35)
- Background: White (#FFFFFF)
- Neutrals: Gray scale (50-900)
- Display: Inter (700-900 weights)
- Body: Inter (300-600 weights)
- Premium rounded corners (8-32px)
- Smooth shadows & glass effects
- Mobile-first responsive design
- Dark/Light mode ready
- Node.js 18+
- npm or pnpm
cd frontend
npm install
# or
pnpm installnpm run devThe app will open at http://localhost:3000
npm run build
npm run start- Python 3.9+
- PostgreSQL (or SQLite for development)
- pip/virtualenv
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Copy environment file
cp .env.example .envEdit .env with your settings:
DATABASE_URL=postgresql://user:password@localhost:5432/shift_db
SECRET_KEY=your-secret-key
ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000python main.pyAPI will be available at http://localhost:8000
View API docs at http://localhost:8000/docs
POST /api/auth/register- Register new userPOST /api/auth/login- Login userPOST /api/auth/verify-email- Verify emailPOST /api/auth/resend-verification- Resend verification
GET /api/gigs- Get all gigsGET /api/gigs/{id}- Get gig detailsPOST /api/gigs- Create new gig (employer only)PUT /api/gigs/{id}- Update gigDELETE /api/gigs/{id}- Delete gigPOST /api/gigs/{id}/apply- Apply to gig
GET /api/users/profile- Get current user profilePUT /api/users/profile- Update profileGET /api/users/{id}- Get user by ID
GET /api/wallet- Get wallet detailsPOST /api/wallet/add-funds- Add fundsPOST /api/wallet/withdraw- Withdraw fundsGET /api/wallet/transactions- Get transaction history
GET /api/chat/conversations- Get conversationsPOST /api/chat/conversations- Create conversationGET /api/chat/conversations/{id}/messages- Get messagesPOST /api/chat/conversations/{id}/messages- Send message
GET /api/admin/analytics- Get platform analyticsGET /api/admin/users- List usersPOST /api/admin/users/{id}/ban- Ban userDELETE /api/admin/gigs/{id}- Remove gig
- β User authentication (register/login)
- β Gig marketplace (browse, post, apply)
- β User profiles & ratings
- β Real-time chat
- β Wallet & transactions
- β Admin dashboard
- β Splash screen
- β Responsive design
- WebSocket real-time chat
- Email notifications
- Stripe payment integration
- Location-based gig discovery
- Advanced search & filters
- Video verification
- Dispute resolution system
- Mobile app (React Native)
- Next.js 16 (App Router)
- React 18
- TypeScript
- Tailwind CSS v4
- Framer Motion (animations)
- Zustand (state management)
- Axios (HTTP client)
- SWR (data fetching)
- FastAPI
- SQLAlchemy (ORM)
- Pydantic (validation)
- JWT (authentication)
- Bcrypt (password hashing)
- PostgreSQL (primary) / SQLite (dev)
Deploy to Vercel:
vercelDeploy to Railway, Render, or Heroku:
# Example: Render
git push origin mainNEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_APP_NAME=Shift
DATABASE_URL=postgresql://...
SECRET_KEY=your-secret
STRIPE_SECRET_KEY=sk_test_...
- Passwords hashed with bcrypt
- JWT tokens for authentication
- CORS enabled
- SQL injection protection via SQLAlchemy
- Environment variables for secrets
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE file for details
For issues and questions:
- GitHub Issues: Create an issue
- Inspired by Uber, Airbnb, and LinkedIn
