Buy. Sell. Give It Another Life.
FERILO is an open-source ecommerce / marketplace project — a peer-to-peer second-hand shopping platform focused on Nepal’s Lumbini region (Rupandehi & Kapilvastu). Think of it as ecommerce website source code for local classifieds: buyers and sellers, product catalogs, checkout-style orders (meetup or delivery), and an admin panel.
Sellers can complete an in-app identity verification workflow (document upload + admin review). That is a product feature for trust on the platform, not a government license, registration, or official endorsement.
Built as a full-stack learning / portfolio ecommerce app you can clone, run locally, or explore on the live demo: listings, search & filters, offers, messaging, orders, reviews, notifications, reports, and moderation.
| Service | URL |
|---|---|
| Website | https://ferilo.pages.dev |
| API | https://ferilo.onrender.com |
| Health | https://ferilo.onrender.com/api/v1/health |
Notes
- Free Render / Neon tiers can sleep. The first visit may take 30–60 seconds. The UI shows Offline preview — connecting… until the API wakes, then Live from database.
CLIENT_URLon Render must be exactlyhttps://ferilo.pages.dev(no trailing slash).
Use these after npm run db:seed (local or Neon). Passwords are for exploration only — change them before any real production use.
| Role | Password | What you can try | |
|---|---|---|---|
| Admin | admin@ferilo.local |
testing01 |
Admin dashboard, verifications, reports, listings moderation |
| Buyer | buyer@ferilo.local |
demo1234 |
Browse, favorites, offers, orders, messages |
| Seller | seller@ferilo.local |
demo1234 |
Seller flows (listings require in-app verification status) |
Optional demo listings (~210 ACTIVE items with photos):
npm run db:seed-productsIf the backend is unreachable, login still opens a portfolio offline session:
| Role | Password | |
|---|---|---|
| Demo buyer | demo@ferilo.local |
any (e.g. demo) |
| Demo admin | admin@ferilo.local |
any (e.g. demo) — email must contain admin |
Offline mode uses hardcoded sample data. Writes (create listing, place order, etc.) are blocked with a clear message.
- Full-stack ecommerce marketplace flows (browse → offer/message → order)
- Registration & JWT auth (access token + HttpOnly refresh cookie)
- Identity verification workflow (user docs + admin review — not a government certification)
- Product listings, images, categories, search & filters
- Favorites, offers/negotiation, messaging
- Orders (meetup & delivery) with delivery quote calculator
- Reviews & reputation, in-app notifications
- Reports & admin moderation
- Rate limiting, Helmet, Zod validation
- Portfolio offline fallback when Neon/Render are asleep
| Layer | Technology |
|---|---|
| Frontend | React, JavaScript, Vite, React Router, Axios, CSS |
| Backend | Node.js, Express, JavaScript, JWT, Zod |
| Database | PostgreSQL |
| Testing | Node.js built-in test runner |
| Type | Open-source ecommerce / C2C marketplace |
- Node.js 20+
- PostgreSQL 16+ (or Docker)
- npm 10+
git clone https://github.com/pradipNP/ferilo-ecommerce-FullstackWebsite.git
cd ferilo-ecommerce-FullstackWebsite
npm install
cp .env.example .envStart Postgres (Docker example):
npm run db:upCreate tables, seed categories/delivery rules, and demo users:
npm run db:setupOptional product catalog:
npm run db:seed-productsRun the app:
npm run dev- Frontend: http://localhost:5180
- API: http://localhost:5000/api/v1
- Health: http://localhost:5000/api/v1/health
Default Docker DATABASE_URL:
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/feriloNever commit a real .env. Copy from .env.example.
| Command | Description |
|---|---|
npm run dev |
Frontend + backend |
npm run build |
Production frontend build |
npm run lint |
Lint backend + frontend |
npm test |
Backend tests |
npm run db:migrate |
Apply schema |
npm run db:seed |
Seed categories, zones, admin + demo users |
npm run db:seed-products |
Seed demo listings |
npm run db:setup |
Migrate + seed |
Full guide: docs/deployment.md
Current public stack:
| Piece | Host |
|---|---|
| Database | Neon |
| API | Render (ferilo.onrender.com) |
| Frontend | Cloudflare Pages (ferilo.pages.dev) |
Contributions are welcome. See CONTRIBUTING.md.
Suggested starter tasks: see open GitHub Issues (labels good first issue, help wanted).
Issue ideas for maintainers: docs/github-issues.md.
Demo passwords are public by design for this portfolio demo. Rotate JWT_SECRET, JWT_REFRESH_SECRET, and all passwords before any serious production deployment. Do not commit secrets.
This project is licensed under the MIT License.





