A modern and responsive web application for customer order management during festivals and events. Built with Next.js 16 and React 19, it provides a seamless user experience for menu browsing, cart management, and order submission.
- π½οΈ Interactive Menu - Browse categories with images and product details
- π Dynamic Cart - Real-time order management with side drawer
- π± Responsive Design - Optimized for both mobile and desktop devices
- π¨ Modern UI - Clean interface with TailwindCSS and Radix UI
- π Real-time Updates - State synchronization with React Query
- β Validation - Forms and data validated with Zod and React Hook Form
- π³ Docker Ready - Simplified deployment with Docker and Docker Compose
- Node.js 20.x or higher
- pnpm 9.x or higher (recommended) or npm/yarn
- Docker and Docker Compose (optional, for containerized deployment)
-
Clone the repository
git clone https://github.com/mysagra/myclienti.git cd myclienti -
Install dependencies
pnpm install
-
Configure environment variables
cp .env.template .env.local
Edit
.env.localwith your values:API_URL=https://your-api-url.com
-
Start the development server
pnpm dev
-
Open your browser at http://localhost:3000
-
Clone the repository (if you haven't already)
git clone https://github.com/mysagra/myclienti.git cd myclienti -
Configure environment variables
Create a
.envfile in the project root:API_URL=https://your-api-url.com
-
Start with Docker Compose
docker compose up -d
-
Access the application at http://localhost:3034
| Variable | Description | Required | Default |
|---|---|---|---|
API_URL |
MySagra API backend URL | Yes | - |
NODE_ENV |
Runtime environment | No | production |
# Local build
pnpm build
pnpm start
# Docker build
docker build -t mysagra-customer-app .
docker run -p 3000:3000 -e API_URL=https://api.example.com mysagra-customer-app- Next.js 16 - React framework with App Router
- React 19 - UI library
- TypeScript - Type safety
- TailwindCSS 4 - Utility-first CSS framework
- Radix UI - Accessible headless components
- Lucide React - Modern icons
- Vaul - Drawer components
- Sonner - Toast notifications
- TanStack Query - Server state management
- React Context - Client state management
- React Hook Form - Form management
- Zod - Schema validation
- Docker - Containerization
- GitHub Actions - CI/CD
- GitHub Container Registry - Docker image hosting
myclienti/
βββ app/ # Next.js App Router
β βββ (login)/ # Login route group
β βββ api/ # API Routes
β β βββ orders/ # Order management
β β βββ proxy/uploads/ # Image proxy
β βββ cart/ # Cart page
β βββ confirmation/ # Order confirmation
β βββ menu/ # Menu and categories
β βββ layout.tsx # Root layout
βββ components/ # Reusable React components
β βββ ui/ # Base UI components
βββ context/ # React Context providers
βββ schemas/ # Zod validation schemas
βββ services/ # API services
βββ lib/ # Utility functions
βββ public/ # Static assets
# Development
pnpm dev # Start dev server
pnpm build # Build for production
pnpm start # Start production server
pnpm lint # Lint with ESLint
# Docker
docker compose up -d # Start containers
docker compose down # Stop containers
docker compose up -d --build # Rebuild and start
docker compose logs -f myclienti # View logsThe project is configured with GitHub Actions for automatic deployment to GitHub Container Registry on every release.
- Configure the secret
API_URLin repository settings - Create a release to trigger the automatic build
- Pull the image:
docker pull ghcr.io/mysagra/mysagra-myclienti:latest
# Login to GHCR
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
# Build and push
docker build -t ghcr.io/mysagra/mysagra-myclienti:latest .
docker push ghcr.io/mysagra/mysagra-myclienti:latestContributions are welcome! Follow these steps:
- Fork the project
- Create a branch for your feature (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is released under the GNU General Public License v3.0. See the LICENSE file for more details.
For questions, suggestions, or support, open an issue on GitHub.
Developed with β€οΈ for MySagra
