Backend repository for HANDL, a full-stack web app that helps users create, manage, and share shopping lists in real time. Whether you're planning groceries solo or coordinating with family, HANDL keeps everything in sync across devices.
- Node.js + Express
- PostgreSQL
- Passport (Session-based auth)
- Nodemailer
- SSE (Server-Sent Events for real-time updates)
- REST API
- PostgreSQL database
- Node.js (v18+)
.env
file with required variables
git clone https://github.com/gitXite/handl_backend.git
cd handl_backend
npm install
The app can be installed locally as a progressive web app (PWA).
Create a .env
file in the root with the following:
PORT=5000
SESSION_SECRET=your_secret
DATABASE_URL=postgresql://user:pass@localhost:5432/handl
[email protected]
EMAIL_PASS=yourpassword
CLIENT_URL=http://localhost:3000
npm run dev
handl_backend/
βββ src/
| βββ config/ # DB and email configuration
| βββ controllers/ # Express route handlers
| βββ middleware/ # Auth, error handling
| βββ routes/ # API endpoints
| βββ services/ # Business logic
| βββ index.js # Entry point
βββ .env.example
βββ README.md
βββ package.json
Session-based authentication using Passport
Email confirmation & password reset via token logic
Server-Sent Events (SSE) for real-time list updates and sharing
Be sure to use secure cookies and HTTPS in production
Configure CORS and sessions properly with frontend origin