GrubApp is an online web-based ordering and supply management system developed by Software Corps for El Ambrosia, a small starting shawarma business. The system is built using SvelteKit, TailwindCSS, DaisyUI, and Supabase. It also uses PostgreSQL as the database, Vite as the bundler and web server, and PNPM as the package manager. Additionally, it utilizes Playwright for end-to-end testing, Sentry.io for error monitoring, Vercel for deployment and analytics, Xendit for payment, Nodemailer and Gmail for email notifications, and ChecklyHQ for running E2E tests.
GrubApp is built using the following technologies:
- SvelteKit - A framework for building web applications using Svelte.
- TailwindCSS - A utility-first CSS framework for building custom designs.
- DaisyUI - A component library for TailwindCSS that provides ready-to-use UI components.
- Supabase - An open-source alternative to Firebase that provides a PostgreSQL database and serverless functions.
- PostgreSQL - An open-source relational database management system.
- Vite - A build tool and development server that serves the project at lightning-fast speeds.
- PNPM - A fast and space-efficient package manager for JavaScript projects.
- TypeScript - A superset of JavaScript that adds static typing to the language.
- Playwright - A Node.js library for browser automation that provides end-to-end testing capabilities.
- Xendit - A payment gateway that allows customers to pay for orders securely and seamlessly.
- Nodemailer - A Node.js library for sending emails.
- Sentry - A platform for error monitoring and performance tracking.
- Vercel - A cloud platform for deploying web projects.
- Vercel Analytics - A web analytics tool for monitoring project performance.
- Checkly - A platform for running end-to-end tests on web applications.
- Vitest - A lightweight and flexible testing library for JavaScript and TypeScript. GrubApp is built using the following technologies:
- Clone this repository
- Install pnpm:
npm install -g pnpm
- Install dependencies:
pnpm install
- Rename the
.env.example
file to.env
- Update the environment variables in the
.env
file to match your Supabase credentials, Xendit API keys, and Nodemailer settings - Start the development server:
pnpm run dev
- Navigate to
http://localhost:5173
in your browser
GrubApp includes the following features:
- User authentication using Supabase
- Online ordering system for customers
- Real-time tracking of orders and inventory using Supabase Realtime
- Automated email notifications using Nodemailer with Gmail
- Detailed reporting and analytics using Supabase SQL and Vercel Analytics
- Integration with Xendit to accept online payments
- Uses Tailwind CSS with DaisyUI for easy and customizable styling
- E2E testing with Playwright using Checkly
- Error monitoring with Sentry
- Typescript for type checking
├── lib/components/ # Reusable Svelte components
├── src/routes/ # SvelteKit pages and and api routes
├── static/ # Static assets (e.g. images)
├── tailwind.config.js # Tailwind CSS configuration file
└── vercel.json # Vercel deployment configuration file
GrubApp includes the following serverless functions:
sendConfirmationEmail
: Sends a confirmation email to the customer when they place an order.updateInventory
: Updates the inventory in real-time when an order is placed.
GrubApp is deployed on Vercel. To deploy your own version of GrubApp:
- Create an account on Vercel
- Create a new project in Vercel
- Follow the steps to link your Github repository to your Vercel project
- Update the environment variables in your Vercel project settings to match your Supabase credentials, Xendit API keys, and Nodemailer settings
- Deploy the project
GrubApp includes e2e tests using Playwright with Checkly. To run the tests:
- Ensure that the development server is running:
pnpm run dev
- Run the tests:
pnpm run test:e2e
GrubApp uses Sentry for error monitoring. To set up Sentry:
- Create an account on Sentry
- Follow the instructions to set up a new project in Sentry
- Update the
SENTRY_DSN
environment variable in the.env
file with your Sentry DSN - Deploy the project to see errors in Sentry
GrubApp uses Vercel Analytics for detailed reporting and analytics. To view the analytics:
- Log in to your Vercel account
- Navigate to your project's dashboard
- Click on the Analytics tab to view your analytics data
We welcome contributions from everyone! Please follow the guidelines below when contributing to GrubApp:
- Fork the repository and create a new branch for your changes
- Make your changes and commit them with a descriptive commit message
- Push your changes to your forked repository
- Create a pull request from your forked repository to this repository's main branch
- Wait for your changes to be reviewed and merged
GrubApp is licensed under the MIT License. See the LICENSE file for details.