A modern web application for the Princeton Game Theory Club, built with Next.js, Tailwind CSS, and FastAPI.
princeton-game-theory-club/
├── app/ # Next.js app directory
│ ├── globals.css # Global styles with Tailwind
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/ # React components
│ ├── Navbar.tsx
│ ├── Footer.tsx
│ ├── HomePage.tsx
│ ├── AboutPage.tsx
│ ├── EventsPage.tsx
│ ├── ResourcesPage.tsx
│ ├── TeamPage.tsx
│ └── ContactPage.tsx
├── backend/ # FastAPI backend
│ ├── main.py # FastAPI application
│ ├── requirements.txt # Python dependencies
│ └── README.md # Backend documentation
├── package.json # Node.js dependencies
├── tailwind.config.js # Tailwind CSS configuration
├── tsconfig.json # TypeScript configuration
└── next.config.js # Next.js configuration
- Node.js 18+ and npm/yarn
- Python 3.8+
- Install dependencies:
npm install- Run the development server:
npm run devThe frontend will be available at http://localhost:3000
- Navigate to the backend directory:
cd backend- Create a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies:
pip install --upgrade pip
pip install -r requirements.txt- Run the FastAPI server:
uvicorn main:app --reload --port 8000The API will be available at http://localhost:8000
API documentation (Swagger UI) at http://localhost:8000/docs
- Modern UI: Built with Tailwind CSS for a responsive, beautiful design
- Single Page Application: Smooth navigation between sections
- RESTful API: FastAPI backend with endpoints for events, team members, and contact forms
- TypeScript: Type-safe React components
- Princeton Branding: Custom colors matching Princeton's orange and black theme
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
GET /api/events- Get all eventsGET /api/events/{event_id}- Get a specific eventPOST /api/events- Create a new eventGET /api/team- Get all team membersGET /api/team/{member_id}- Get a specific team memberPOST /api/contact- Submit a contact message
- Frontend: Next.js 14, React 18, TypeScript, Tailwind CSS
- Backend: FastAPI, Python, Pydantic
- Styling: Tailwind CSS with custom Princeton colors
MIT