Eat Easy is a modern web application built with React (Vite) and TypeScript that helps users discover and recommend dishes and nearby locations. It features a robust authentication system using Supabase and a custom Express.js backend for handling secure OTP verification via Resend.
- Features
- Prerequisites
- Environment Setup
- Installation
- Development
- Production Build
- Project Structure
- Contributing
- Personalized Recommendations: Discover dishes based on preferences.
- Secure Authentication: Custom 4-digit OTP email verification flow using Resend and Supabase Admin API.
- Responsive Design: Optimized for both desktop and mobile experiences.
- Theme Support: seamless Dark/Light mode toggling.
- Smooth Animations: Integrated
framer-motionfor engaging UI interactions. - Location Services: Interactive components for finding nearby places.
Ensure you have the following installed:
Create a .env file in the root directory of the project. You will need credentials from Supabase and Resend.
# Supabase Configuration (Client-side)
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
# Supabase Configuration (Server-side)
# Required for the backend to create verified users directly
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# Resend Configuration (Email Service)
RESEND_API_KEY=re_123456789...
# Backend Server Configuration
SERVER_PORT=5174Warning: Never commit your
.envfile to version control.
-
Clone the repository:
git clone https://github.com/ShinobiKoda/eat-easy.git cd eat-easy -
Install dependencies:
npm install
To run the application locally, you need to start both the backend server and the frontend client.
-
Start the Backend Server: Open a terminal and run:
npm run server
This runs the Express server on port 5174 (or as defined in
.env). -
Start the Frontend Client: Open a second terminal and run:
npm run dev
This starts the Vite development server, usually on port 5173.
-
Access the App: Open your browser and navigate to
http://localhost:5173.
To deploy the application, you need to build both the frontend and the backend.
-
Build Frontend and Backend:
npm run build # Builds the frontend to /dist npm run build:server # Builds the backend to /dist (server)
-
Start Production Server:
npm run start:server
This starts the compiled Node.js server.
src/components/: Reusable UI components (auth, animations, layout).src/pages/: Main application pages.src/Server.ts: Express backend source code.src/services/: API service layers (UserProfile, etc.).src/config/: Configuration files (Supabase client).
Contributions are welcome!
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes.
- Open a Pull Request.