An all-in-one SaaS solution for restaurants including POS, menu management, order management, reservations, customer management, and reviews.
- 🚀 Tech Stack
- 📚 Resources
- 🏗️ Project Structure
- 📦 Package Management
- 🚦 Getting Started
- 📝 Environment Variables
- 🤝 Contributing
- 📝 Commit Message Convention
- 🐳 Docker Support
- Node.js - Official Documentation
- Express.js - Official Documentation
- PostgreSQL - Official Documentation
- Prisma ORM - Official Documentation
- JSON Web Tokens (JWT) - Official Documentation
- Zod Schema Validation - Official Documentation
- REST API Best Practices
- Node.js Best Practices
- Clean Architecture with Node.js
- API Security Best Practices
- Modern JavaScript Features
- Prisma Schema Design Guide
- Database Connection Management
- Prisma Relationship Guide
- PostgreSQL Performance Tuning
├── prisma/
│ ├── migrations/
│ ├── schema.prisma
│ └── migration_lock.toml
├── src/
│ ├── api/
│ │ └── v1/
│ │ ├── controllers/
│ │ ├── middlewares/
│ │ ├── routes/
│ │ ├── schemas/
│ │ └── services/
│ ├── utils/
│ │ ├── config.js
│ │ ├── prisma.js
│ │ └── seed.js
│ └── index.js
├── .babelrc
├── .env
├── .eslintrc
├── .prettierrc
└── package.json
# Add production dependency
pnpm add [package-name]
# Add development dependency
pnpm add -D [package-name]
# Add global dependency
pnpm add -g [package-name]
# Check for updates
pnpm update --interactive
# Update all dependencies
pnpm update
# Update specific package
pnpm update [package-name]
# View pnpm version
pnpm -v
# Upgrade pnpm itself
pnpm add -g pnpm
# Clean dependencies
pnpm store prune
- Disk Space Efficiency: pnpm creates a single content-addressable storage for all packages, significantly reducing disk space usage.
- Security: Prevents phantom dependencies by using strict package resolution.
- Performance: Faster installation times compared to npm and yarn.
- Monorepo Support: Built-in support for monorepos without additional tools.
- Create a feature branch from
main
- Commit your changes following Commit Message Convention
- Push your branch and create a Pull Request
- Ensure CI passes and get code review
This website follows Conventional Commits
Commit message will be checked using husky and commit lint, you can't commit if not using the proper convention below.
<type>(optional scope): <description>
Example: feat(pre-event): add speakers section
Available types are:
- feat → Changes about addition or removal of a feature. Ex:
feat: add table on landing page
,feat: remove table from landing page
- fix → Bug fixing, followed by the bug. Ex:
fix: illustration overflows in mobile view
- docs → Update documentation (README.md)
- style → Updating style, and not changing any logic in the code (reorder imports, fix whitespace, remove comments)
- chore → Installing new dependencies, or bumping deps
- refactor → Changes in code, same output, but different approach
- ci → Update github workflows, husky
- test → Update testing suite, cypress files
- revert → when reverting commits
- perf → Fixing something regarding performance (deriving state, using memo, callback)
- vercel → Blank commit to trigger vercel deployment. Ex:
vercel: trigger deployment
Labels per page Ex: feat(pre-event): add date label
*If there is no scope needed, you don't need to write it
Description must fully explain what is being done.
Add BREAKING CHANGE in the description if there is a significant change.
If there are multiple changes, then commit one by one
- After colon, there are a single space Ex:
feat: add something
- When using
fix
type, state the issue Ex:fix: file size limiter not working
- Use imperative, and present tense: "change" not "changed" or "changes"
- Don't use capitals in front of the sentence
- Don't add full stop (.) at the end of the sentence
# Install Docker Desktop for Windows first
# Build container
docker build -t restrohq .
# Run container
docker run -p 3000:3000 restrohq
# Build container
docker build -t restrohq .
# Run container
docker run -p 3000:3000 restrohq