Skip to content

Ayushh-Sharmaa/GSF

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

189 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GSF β€” Global Society of Founders

A global-first digital platform for student founders. Validate ideas, connect with world-class experts, and build with confidence.

Code Quality License


πŸ—οΈ Stack

Layer Technology
Frontend Next.js 16 (App Router), React 19, TypeScript, TailwindCSS v4
Auth Clerk β€” identity, sessions, role management
Database PostgreSQL β€” Drizzle ORM (Next.js) + SQLAlchemy async (Python)
Python Backend FastAPI, SQLAlchemy async, asyncpg
Email Nodemailer (SMTP)
Webhooks Svix (Clerk webhook verification)
Deployment Vercel (frontend) + Render (Python backend)

πŸ“ Project Structure

GSF/
β”œβ”€β”€ app/                         # Next.js App Router pages
β”‚   β”œβ”€β”€ (auth)/                  # Sign-in / sign-up routes
β”‚   β”œβ”€β”€ (student)/               # Student dashboard routes
β”‚   β”œβ”€β”€ (expert)/                # Expert dashboard routes
β”‚   β”œβ”€β”€ (admin)/                 # Admin routes
β”‚   β”œβ”€β”€ api/                     # Next.js API route handlers (23 endpoints)
β”‚   β”œβ”€β”€ actions/                 # Next.js Server Actions
β”‚   β”œβ”€β”€ layout.tsx               # Root layout (Clerk, ThemeProvider, Navbar)
β”‚   └── globals.css              # Global styles + CSS custom properties
β”‚
β”œβ”€β”€ components/                  # Reusable React components
β”‚   β”œβ”€β”€ ui/                      # Base UI primitives
β”‚   β”œβ”€β”€ layout/                  # Navbar, ThemeProvider, PageTransition
β”‚   β”œβ”€β”€ landing/                 # Marketing/landing components
β”‚   β”œβ”€β”€ experts/                 # Expert profile components
β”‚   β”œβ”€β”€ matching/                # Matching engine UI
β”‚   └── ...
β”‚
β”œβ”€β”€ lib/                         # Core business logic
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   β”œβ”€β”€ client.ts            # ← Centralized Python backend API client
β”‚   β”‚   └── route-helpers.ts     # Next.js route handler utilities
β”‚   β”œβ”€β”€ db/
β”‚   β”‚   β”œβ”€β”€ index.ts             # Drizzle DB singleton
β”‚   β”‚   └── schema.sql           # Raw SQL schema reference
β”‚   β”œβ”€β”€ schema.ts                # Drizzle ORM schema definitions
β”‚   β”œβ”€β”€ auth.ts                  # Clerk β†’ AuthUser mapping
β”‚   β”œβ”€β”€ matchingEngine.ts        # Expert-founder matching algorithm
β”‚   β”œβ”€β”€ credits-server.ts        # Credit management (server-side)
β”‚   β”œβ”€β”€ subscription.ts          # Subscription plan logic
β”‚   └── ...
β”‚
β”œβ”€β”€ hooks/                       # Custom React hooks
β”œβ”€β”€ types/                       # TypeScript global type declarations
β”œβ”€β”€ utils/                       # Utility functions
β”œβ”€β”€ migrations/                  # SQL migration files
β”‚
β”œβ”€β”€ python-backend/              # FastAPI Python backend
β”‚   β”œβ”€β”€ routers/                 # Route handlers (sessions, credits, ventures)
β”‚   β”œβ”€β”€ main.py                  # App entry point (CORS, routers, health check)
β”‚   β”œβ”€β”€ auth.py                  # Clerk JWT validation via JWKS
β”‚   β”œβ”€β”€ database.py              # SQLAlchemy async engine
β”‚   β”œβ”€β”€ models.py                # SQLAlchemy models
β”‚   β”œβ”€β”€ requirements.txt         # Python dependencies
β”‚   β”œβ”€β”€ .env.example             # Backend environment template
β”‚   β”œβ”€β”€ Dockerfile               # Production Docker image
β”‚   └── render.yaml              # Render deployment config
β”‚
β”œβ”€β”€ .github/
β”‚   β”œβ”€β”€ workflows/               # 41 GitHub Actions workflows
β”‚   β”‚   └── readme.md            # Complete workflow reference
β”‚   β”œβ”€β”€ reviewers/               # Mentor pool & stats JSON files
β”‚   └── labels/                  # Label definitions (gssoc-labels.json)
β”‚
β”œβ”€β”€ docs/                        # Internal developer documentation
β”‚   β”œβ”€β”€ CLERK_GUIDE.md
β”‚   β”œβ”€β”€ SUBSCRIPTION_SYSTEM.md
β”‚   β”œβ”€β”€ REALTIME_NOTIFICATIONS.md
β”‚   └── ...
β”‚
β”œβ”€β”€ .env.example                 # Frontend environment template ← START HERE
β”œβ”€β”€ vercel.json                  # Vercel deployment config
β”œβ”€β”€ next.config.ts               # Next.js config
β”œβ”€β”€ drizzle.config.ts            # Drizzle Kit config
└── tailwind.config.ts           # TailwindCSS config

πŸš€ Getting Started

Prerequisites

1. Clone the repo

git clone https://github.com/Ayushh-Sharmaa/GSF.git
cd GSF

2. Set up the Next.js frontend

# Install dependencies
npm install

# Copy the environment template and fill in your values
cp .env.example .env.local

Edit .env.local:

  • Clerk keys β€” from Clerk Dashboard β†’ Your App β†’ API Keys
  • DATABASE_URL β€” your PostgreSQL connection string (Neon or Supabase)
  • NEXT_PUBLIC_API_URL β€” http://localhost:8000 for local development
# Run the dev server
npm run dev
# β†’ http://localhost:3000

3. Set up the Python backend (optional for full-stack)

cd python-backend

# Create a virtual environment
python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Copy and fill in environment variables
cp .env.example .env

Edit python-backend/.env:

  • DATABASE_URL β€” same PostgreSQL database as the frontend
  • CLERK_DOMAIN β€” your Clerk frontend API domain (e.g. your-app.clerk.accounts.dev)
  • FRONTEND_URL β€” http://localhost:3000
# Run the backend
uvicorn main:app --reload --port 8000
# β†’ http://localhost:8000
# β†’ Health check: http://localhost:8000/health

πŸ“œ Available Scripts

Command Description
npm run dev Start Next.js dev server
npm run build Production build
npm run start Start production server
npm run lint Run ESLint via next lint
npm run lint:fix Auto-fix ESLint errors
npm run format Format all files with Prettier
npm run type-check TypeScript type check (no emit)
npm run test Run Vitest test suite
npm run test:watch Run Vitest in watch mode

🌍 Environment Variables

See .env.example for the full list with descriptions.

Frontend (.env.local):

Variable Required Description
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY βœ… Clerk publishable key
CLERK_SECRET_KEY βœ… Clerk secret key
DATABASE_URL βœ… PostgreSQL connection string
NEXT_PUBLIC_API_URL βœ… Python backend URL
SVIX_SECRET βœ… Svix webhook signing secret
EMAIL_* For email features SMTP credentials

Python backend (python-backend/.env):

Variable Required Description
DATABASE_URL βœ… PostgreSQL connection string
CLERK_DOMAIN βœ… Clerk JWKS domain for JWT validation
FRONTEND_URL βœ… Allowed CORS origin(s)

🚒 Deployment

Frontend β†’ Vercel

  1. Push to GitHub
  2. Import the repo in Vercel
  3. Set all environment variables from .env.example in Vercel Dashboard β†’ Project β†’ Settings β†’ Environment Variables
  4. Deploy β€” Vercel auto-deploys on every push to main

Python Backend β†’ Render

  1. Connect the repo in Render
  2. Use python-backend/render.yaml as the service definition
  3. Set DATABASE_URL, CLERK_DOMAIN, FRONTEND_URL in Render Dashboard β†’ Environment
  4. First deploy triggers automatically

Python Backend β†’ Docker (self-hosted)

cd python-backend
docker build -t gsf-api .
docker run -p 8000:8000 --env-file .env gsf-api

πŸ€– GitHub Actions Workflows

This repo has 41 automated workflows handling assignment management, PR pipelines, spam detection, mentor systems, leaderboards, code quality, and AI-assisted reviews.

See .github/workflows/readme.md for the complete reference.

Required secrets (set in GitHub β†’ Repo β†’ Settings β†’ Secrets):

Secret Used by
OPENAI_API_KEY AI slop detection, Tenet PR review
PROJECTS_TOKEN GitHub Projects board management

Required repo variables (Settings β†’ Variables):

Variable Default Used by
MENTOR_LEADERBOARD_ISSUE 1 Mentor leaderboard
CONTRIBUTOR_LEADERBOARD_ISSUE 2 Contributor leaderboard
PROJECT_BOARD_NUMBER 1 Project board management

🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md before submitting a PR.

  1. Pick an issue and comment /assign to claim it
  2. Fork the repo and create a branch: git checkout -b feat/your-feature
  3. Make your changes with DCO sign-off: git commit -s -m "feat: add X"
  4. Open a PR β€” our automated pipeline will guide you through the rest

πŸ“„ License

MIT License Β© 2025 GSF β€” Global Society of Founders

About

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors