Skip to content

Latest commit

Β 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Shift Labs - Student Gig Economy Platform

A modern, full-stack platform connecting students with flexible gig opportunities. Built with Next.js 16 (frontend) and FastAPI (backend).

Project Screenshot

Project Structure

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

Design System

Color Palette

  • Primary: Electric Green (#22C55E)
  • Accent: Neon Orange (#FF6B35)
  • Background: White (#FFFFFF)
  • Neutrals: Gray scale (50-900)

Typography

  • Display: Inter (700-900 weights)
  • Body: Inter (300-600 weights)

Components

  • Premium rounded corners (8-32px)
  • Smooth shadows & glass effects
  • Mobile-first responsive design
  • Dark/Light mode ready

Frontend Setup

Prerequisites

  • Node.js 18+
  • npm or pnpm

Installation

cd frontend
npm install
# or
pnpm install

Development

npm run dev

The app will open at http://localhost:3000

Build

npm run build
npm run start

Backend Setup

Prerequisites

  • Python 3.9+
  • PostgreSQL (or SQLite for development)
  • pip/virtualenv

Installation

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 .env

Configure Environment

Edit .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:3000

Run Development Server

python main.py

API will be available at http://localhost:8000

View API docs at http://localhost:8000/docs

API Endpoints

Authentication

  • POST /api/auth/register - Register new user
  • POST /api/auth/login - Login user
  • POST /api/auth/verify-email - Verify email
  • POST /api/auth/resend-verification - Resend verification

Gigs

  • GET /api/gigs - Get all gigs
  • GET /api/gigs/{id} - Get gig details
  • POST /api/gigs - Create new gig (employer only)
  • PUT /api/gigs/{id} - Update gig
  • DELETE /api/gigs/{id} - Delete gig
  • POST /api/gigs/{id}/apply - Apply to gig

Users

  • GET /api/users/profile - Get current user profile
  • PUT /api/users/profile - Update profile
  • GET /api/users/{id} - Get user by ID

Wallet

  • GET /api/wallet - Get wallet details
  • POST /api/wallet/add-funds - Add funds
  • POST /api/wallet/withdraw - Withdraw funds
  • GET /api/wallet/transactions - Get transaction history

Chat

  • GET /api/chat/conversations - Get conversations
  • POST /api/chat/conversations - Create conversation
  • GET /api/chat/conversations/{id}/messages - Get messages
  • POST /api/chat/conversations/{id}/messages - Send message

Admin

  • GET /api/admin/analytics - Get platform analytics
  • GET /api/admin/users - List users
  • POST /api/admin/users/{id}/ban - Ban user
  • DELETE /api/admin/gigs/{id} - Remove gig

Features

MVP (Current)

  • βœ… User authentication (register/login)
  • βœ… Gig marketplace (browse, post, apply)
  • βœ… User profiles & ratings
  • βœ… Real-time chat
  • βœ… Wallet & transactions
  • βœ… Admin dashboard
  • βœ… Splash screen
  • βœ… Responsive design

Roadmap

  • 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)

Technology Stack

Frontend

  • Next.js 16 (App Router)
  • React 18
  • TypeScript
  • Tailwind CSS v4
  • Framer Motion (animations)
  • Zustand (state management)
  • Axios (HTTP client)
  • SWR (data fetching)

Backend

  • FastAPI
  • SQLAlchemy (ORM)
  • Pydantic (validation)
  • JWT (authentication)
  • Bcrypt (password hashing)
  • PostgreSQL (primary) / SQLite (dev)

Deployment

Frontend

Deploy to Vercel:

vercel

Backend

Deploy to Railway, Render, or Heroku:

# Example: Render
git push origin main

Environment Variables

Frontend (.env.local)

NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_APP_NAME=Shift

Backend (.env)

DATABASE_URL=postgresql://...
SECRET_KEY=your-secret
STRIPE_SECRET_KEY=sk_test_...

Security

  • Passwords hashed with bcrypt
  • JWT tokens for authentication
  • CORS enabled
  • SQL injection protection via SQLAlchemy
  • Environment variables for secrets

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License - see LICENSE file for details

Support

For issues and questions:

Acknowledgments

  • Inspired by Uber, Airbnb, and LinkedIn

About

A modern, full-stack platform connecting students with flexible gig opportunities. Built with Next.js 16 (frontend) and Python FastAPI (backend).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages