Skip to content

Commit f967bb7

Browse files
committed
sd
1 parent 52dfd1c commit f967bb7

40 files changed

Lines changed: 9515 additions & 437 deletions

README.md

Lines changed: 200 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,214 @@
1-
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
1+
# PUSD Culinary Department Web App
22

3-
## Getting Started
3+
A comprehensive web application for the Pleasanton Unified School District's culinary department, featuring online ordering, reservations, custom requests, and a full admin dashboard.
44

5-
First, run the development server:
5+
## Features
66

7-
```bash
8-
npm run dev
9-
# or
10-
yarn dev
11-
# or
12-
pnpm dev
13-
# or
14-
bun dev
7+
### For Users
8+
- **Online Menu & Ordering**: Browse menu items, customize orders, and place orders online
9+
- **Reservations**: Make dining reservations at any school location
10+
- **Custom Requests**: Submit special meal requests
11+
- **Order Tracking**: Track order status and history
12+
- **School Selection**: Choose from multiple school locations
13+
- **User Profiles**: Manage personal information and preferences
14+
15+
### For Administrators
16+
- **Admin Dashboard**: Comprehensive overview with analytics and statistics
17+
- **Order Management**: View, update, and manage all orders
18+
- **Menu Management**: Add, edit, and manage menu items and categories
19+
- **Reservation Management**: Handle reservations and availability
20+
- **User Management**: Manage user accounts and permissions
21+
- **Analytics**: View sales reports and performance metrics
22+
- **Calendar Management**: Block out availability and manage schedules
23+
24+
## Tech Stack
25+
26+
- **Frontend**: Next.js 15, React 19, TypeScript
27+
- **Styling**: Tailwind CSS, shadcn/ui components
28+
- **Authentication**: NextAuth.js with Google OAuth
29+
- **Database**: PostgreSQL with Drizzle ORM
30+
- **Payments**: Stripe integration
31+
- **Email**: Resend for notifications
32+
- **Deployment**: Vercel-ready
33+
34+
## Prerequisites
35+
36+
- Node.js 18+
37+
- pnpm (recommended) or npm
38+
- PostgreSQL database (Neon, Supabase, or self-hosted)
39+
- Google OAuth credentials
40+
- Stripe account (for payments)
41+
- Resend account (for emails)
42+
43+
## Environment Variables
44+
45+
Create a `.env.local` file in the root directory with the following variables:
46+
47+
```env
48+
# Database
49+
DATABASE_URL="postgresql://username:password@localhost:5432/pleasanton_culinary"
50+
51+
# NextAuth
52+
NEXTAUTH_URL="http://localhost:3000"
53+
NEXTAUTH_SECRET="your-nextauth-secret-key-here"
54+
55+
# Google OAuth
56+
GOOGLE_CLIENT_ID="your-google-client-id"
57+
GOOGLE_CLIENT_SECRET="your-google-client-secret"
58+
59+
# Stripe (for payments)
60+
STRIPE_PUBLISHABLE_KEY="pk_test_your-stripe-publishable-key"
61+
STRIPE_SECRET_KEY="sk_test_your-stripe-secret-key"
62+
STRIPE_WEBHOOK_SECRET="whsec_your-stripe-webhook-secret"
63+
64+
# Email (Resend)
65+
RESEND_API_KEY="your-resend-api-key"
66+
67+
# App Configuration
68+
NEXT_PUBLIC_APP_URL="http://localhost:3000"
69+
```
70+
71+
## Installation
72+
73+
1. **Clone the repository**
74+
```bash
75+
git clone <repository-url>
76+
cd culinary
77+
```
78+
79+
2. **Install dependencies**
80+
```bash
81+
pnpm install
82+
```
83+
84+
3. **Set up environment variables**
85+
```bash
86+
cp .env.example .env.local
87+
# Edit .env.local with your actual values
88+
```
89+
90+
4. **Set up the database**
91+
```bash
92+
# Push the schema to your database
93+
pnpm db:push
94+
95+
# (Optional) Open Drizzle Studio to view/edit data
96+
pnpm db:studio
97+
```
98+
99+
5. **Run the development server**
100+
```bash
101+
pnpm dev
102+
```
103+
104+
6. **Open your browser**
105+
Navigate to [http://localhost:3000](http://localhost:3000)
106+
107+
## Database Setup
108+
109+
### Using Neon (Recommended)
110+
111+
1. Create a Neon account at [neon.tech](https://neon.tech)
112+
2. Create a new project
113+
3. Copy the connection string to your `.env.local`
114+
4. Run `pnpm db:push` to create tables
115+
116+
### Using Supabase
117+
118+
1. Create a Supabase account at [supabase.com](https://supabase.com)
119+
2. Create a new project
120+
3. Get your database connection string
121+
4. Run `pnpm db:push` to create tables
122+
123+
## Google OAuth Setup
124+
125+
1. Go to [Google Cloud Console](https://console.cloud.google.com)
126+
2. Create a new project or select existing one
127+
3. Enable the Google+ API
128+
4. Create OAuth 2.0 credentials
129+
5. Add authorized redirect URIs:
130+
- `http://localhost:3000/api/auth/callback/google` (development)
131+
- `https://yourdomain.com/api/auth/callback/google` (production)
132+
6. Copy Client ID and Client Secret to your `.env.local`
133+
134+
## Stripe Setup
135+
136+
1. Create a Stripe account at [stripe.com](https://stripe.com)
137+
2. Get your API keys from the dashboard
138+
3. Set up webhooks for payment events
139+
4. Add keys to your `.env.local`
140+
141+
## Deployment
142+
143+
### Vercel (Recommended)
144+
145+
1. Push your code to GitHub
146+
2. Connect your repository to Vercel
147+
3. Add environment variables in Vercel dashboard
148+
4. Deploy
149+
150+
### Other Platforms
151+
152+
The app is compatible with any platform that supports Next.js:
153+
- Netlify
154+
- Railway
155+
- DigitalOcean App Platform
156+
- AWS Amplify
157+
158+
## Project Structure
159+
160+
```
161+
culinary/
162+
├── app/ # Next.js app directory
163+
│ ├── admin/ # Admin dashboard pages
164+
│ ├── auth/ # Authentication pages
165+
│ ├── menu/ # Menu and ordering
166+
│ ├── reservations/ # Reservation system
167+
│ ├── api/ # API routes
168+
│ └── globals.css # Global styles
169+
├── components/ # React components
170+
│ ├── ui/ # shadcn/ui components
171+
│ └── providers/ # Context providers
172+
├── lib/ # Utility functions
173+
│ ├── auth.ts # NextAuth configuration
174+
│ ├── db.ts # Database connection
175+
│ └── schema.ts # Database schema
176+
├── hooks/ # Custom React hooks
177+
├── public/ # Static assets
178+
└── drizzle/ # Database migrations
15179
```
16180

17-
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
181+
## Available Scripts
18182

19-
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
183+
- `pnpm dev` - Start development server
184+
- `pnpm build` - Build for production
185+
- `pnpm start` - Start production server
186+
- `pnpm lint` - Run ESLint
187+
- `pnpm db:push` - Push schema to database
188+
- `pnpm db:studio` - Open Drizzle Studio
20189

21-
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
190+
## Contributing
22191

23-
## Learn More
192+
1. Fork the repository
193+
2. Create a feature branch
194+
3. Make your changes
195+
4. Add tests if applicable
196+
5. Submit a pull request
24197

25-
To learn more about Next.js, take a look at the following resources:
198+
## License
26199

27-
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28-
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
200+
This project is licensed under the MIT License.
29201

30-
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
202+
## Support
31203

32-
## Deploy on Vercel
204+
For support, email culinary@pleasantonusd.net or create an issue in the repository.
33205

34-
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
206+
## Roadmap
35207

36-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
208+
- [ ] Mobile app development
209+
- [ ] Advanced analytics dashboard
210+
- [ ] Integration with school management systems
211+
- [ ] Multi-language support
212+
- [ ] Advanced customization options
213+
- [ ] Real-time order notifications
214+
- [ ] Inventory management system

0 commit comments

Comments
 (0)