A digital menu generator for restaurants, built using T3 stack
Introduction • Prerequisite • How To Use • Contributing • License
Menufic is a digital menu generator for restaurants that makes it simple and easy for anyone to create and share their restaurant menus. Menufic is built using Next.js, NextAuth.js, Prisma, tRPC, Neon & Imagekit. Following are some of the features that Menufic provides.
- Simple & intuitive UI to create & manage restaurant menus
- Generate menus that are optimized for search engines and social media crawlers
- Support for both light and dark themes
- Attach multiple banner images to menus
- Share generated menu using URL or QR code
- Responsive UI design that works well on all devices
General:
- Imagekit account for managing all the uploaded images.
- Google / GitHub for authenticating users
Barebone Installation:
- Git
- Node.js 16+
- NPM 7+
- PostgreSQL for persisting data.
Docker Installation:
- Docker CE
- Docker Compose
# copy env file and adjust to your needs
cp .env.example .env
# spawn the docker stack
docker compose up
The web application will be accessible on http://127.0.0.1:3000.
If you do not trust our externally hosted Docker Images, feel free to build the Docker Image locally yourself:
docker build -t menufic .
From your command line:
# Clone this repository
$ git clone https://github.com/kaje94/menufic
# Go into the repository
$ cd menufic
# Install dependencies
$ npm install
You need to create a
.env
file at the root folder with the keys defined in.env.example
before running any of the following commands.
Scripts related to the Next.js app:
# To migrate the Database (Make sure that you have a valid DATABASE_URL in your .env file).
# This is needed if you are planning to run Menufic locally
$ npx prisma db push
# Start the app in development mode with hot-code reloading by running:
$ npm run dev
# Create an optimized production build of the application by running
$ npm run build
# After building the app start it in production mode by running:
$ npm start
Scripts related to linting and formatting:
# Check if there are any linting issues by running:
$ npm run lint
# Check & fix fixable linting issues by running:
$ npm run lint:fix
# Format other files types such as .json, .md & .css by running:
$ npm run format-rest
Scripts related to playwright tests:
Before running playwright tests, make sure that you have added TEST_MENUFIC_USER_LOGIN_KEY and TEST_MENUFIC_BASE_URL to your .env file
# Start dev server(If its not already running) & run all e2e tests
$ npm run test:e2e
Please refer the Contributing.md in order to contribute towards this project
a.kajendran@gmail.com · GitHub @kaje94 ·