FeedMe is a comprehensive team food ordering platform that streamlines group orders for companies and organizations. Built with Next.js, TypeScript, and modern web technologies, it provides a seamless experience for both managers and employees to coordinate group food orders efficiently.
- Order Session Management: Create and manage group order sessions with specific time windows
- DoorDash Integration: Automatically generate DoorDash group order links
- Real-time Monitoring: Track participant responses (ordered, passed, preset orders)
- Preset Order Management: Handle special dietary requests and preset orders
- Company Administration: Manage company settings and user roles
- Debug Tools: Comprehensive debugging tools for troubleshooting
- Simple Order Interface: Easy-to-use interface for participating in group orders
- Multiple Response Options:
- Order directly through DoorDash
- Pass on the current session
- Submit preset orders with special requests
- Real-time Updates: See live updates of order session status
- Order History: View past orders and session participation
- Role-based Access: Separate dashboards for managers and employees
- Company Management: Multi-tenant architecture supporting multiple companies
- Real-time Notifications: Live updates for order status changes
- Responsive Design: Works seamlessly on desktop and mobile devices
- Authentication: Secure user authentication with Clerk
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Radix UI Components
- Authentication: Clerk
- Database: Supabase (PostgreSQL)
- External APIs: Slack API for notifications
- Deployment: Vercel (recommended)
-
Clone the repository
git clone https://github.com/yourusername/feedme.git cd feedme -
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:# Clerk Authentication NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_UP_URL=/custom-signup NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard # Supabase Database NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
-
Set up the database
- Create a Supabase project
- Run the database migrations (see Database Schema section)
- Configure Row Level Security (RLS) policies
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
The application uses the following main tables:
organizations- Company informationusers- User profiles and company associationsorder_sessions- Group order sessionssession_participants- User participation in sessionspreset_order_requests- Special dietary requests
- Users belong to organizations
- Order sessions belong to organizations
- Session participants link users to order sessions
- Preset order requests are associated with sessions and users
- Sign Up: Create an account using the custom signup flow
- Create a Company: If you're an admin, create a company
- Join a Company: If you're an employee, get invited by your company admin
- Start Ordering: Participate in group order sessions
- Access Manager Dashboard: Navigate to
/manager-dashboard - Create Order Sessions: Set up group orders with time windows
- Monitor Responses: Track team member participation in real-time
- Handle Preset Orders: Manage special dietary requests
- Access Employee Dashboard: Navigate to
/employee-dashboard - View Active Sessions: See current group order opportunities
- Participate: Order, pass, or submit preset requests
- Track History: View past order participation
GET /api/order-sessions- List all order sessionsPOST /api/order-sessions- Create new order sessionPATCH /api/order-sessions/[id]- Update session detailsDELETE /api/order-sessions/[id]- Delete session
POST /api/doordash/group-orders- Create DoorDash group orderGET /api/doordash/group-orders- List group orders
GET /api/check-user-role- Get user role informationPOST /api/create-company- Create new companyGET /api/companies- Get company information
The application uses a comprehensive set of UI components built with Radix UI and styled with Tailwind CSS:
- Layout Components: Navigation, Header, Footer
- Form Components: Input, Select, Button, Checkbox
- Display Components: Card, Badge, Alert, Dialog
- Interactive Components: Dropdown, Popover, Toast notifications
- Authentication: Secure user authentication with Clerk
- Authorization: Role-based access control
- Data Protection: Row Level Security (RLS) in Supabase
- Input Validation: Comprehensive input validation and sanitization
- API Security: Protected API routes with proper authentication
- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy - Vercel will automatically build and deploy
-
Build the application
npm run build
-
Start the production server
npm start
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
This project was built for a hackathon and demonstrates:
- Full-stack development with modern web technologies
- Real-time features with live updates and notifications
- External API integration with Slack for notifications
- Responsive design that works on all devices
- Scalable architecture supporting multiple companies
- User experience focus with intuitive interfaces
- Authentication Issues: Ensure Clerk keys are correctly set
- Database Connection: Verify Supabase credentials and RLS policies
- DoorDash Integration: Check API keys and rate limits
- Build Errors: Ensure all dependencies are installed
The manager dashboard includes comprehensive debug tools for troubleshooting:
- RLS policy testing
- Database connection verification
- API endpoint testing
- Session management tools
For support or questions:
- Create an issue in the GitHub repository
- Check the troubleshooting section
- Review the debug tools in the manager dashboard
Built with β€οΈ for better team food ordering experiences