A modern, responsive fast food restaurant website built with Next.js, TypeScript, and Tailwind CSS. Features secure authentication, admin dashboard, and file storage integration.
-
User Authentication
- Secure login/signup with NextAuth.js
- Role-based access control
- Social login integration (Google, Facebook)
-
Admin Dashboard
- Complete menu management
- User management
- Order tracking system
- Analytics and reporting
-
Customer Features
- Online ordering system
- Real-time order tracking
- User profile management
- Order history
-
Technical Features
- File Storage: FTP integration for image uploads
- Database: PostgreSQL with Prisma ORM
- Email Integration: SMTP for notifications
- Responsive Design: Mobile-first approach
- API Documentation with Swagger
- Next.js 14
- TypeScript
- Tailwind CSS
- Shadcn UI Components
- React Query for data fetching
- Node.js
- PostgreSQL
- Prisma ORM
- NextAuth.js
- Bcrypt
- FTP for file storage
- SMTP for emails
- Redis for caching
- Docker support
- Node.js 18.x or higher
- PostgreSQL 14.x or higher
- npm or yarn package manager
-
Clone the repository:
git clone https://github.com/kaleabo/eftah.git cd eftah
-
Install dependencies:
npm install
-
Configure environment variables:
cp .env.example .env
Update the following in your
.env
:DATABASE_URL
: PostgreSQL connection stringNEXTAUTH_SECRET
: Authentication secret keySMTP_*
: Email service credentialsFTP_*
: File storage credentialsADMIN_*
: Initial admin user details
-
Set up the database:
npx prisma migrate dev npx prisma generate
-
Seed the database:
npm run seed
-
Start development server:
npm run dev
-
Access the application:
- Website:
http://localhost:3000
- Admin dashboard:
http://localhost:3000/admin
- API docs:
http://localhost:3000/api-docs
- Website:
- Email: admin@eftahfastfood.com
- Password: admin123
npm run dev
: Start development servernpm run build
: Build for productionnpm start
: Start production servernpm run lint
: Run ESLintnpm run test
: Run testsnpm run seed
: Seed database
eftah/
├── components/ # Reusable UI components
├── pages/ # Next.js pages
├── prisma/ # Database schema and migrations
├── public/ # Static assets
├── styles/ # Global styles
├── lib/ # Utility functions
└── types/ # TypeScript definitions
- Fork the repository
- Create your 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.
For support, email support@eftahfastfood.com or join our Slack channel.