Sulakshana Truck & Body Techno
A full-stack Flask business platform for a truck body fabrication workshop in Sri Lanka — a public marketing site with a hero banner, services, gallery, and client logos, backed by a JWT-secured admin dashboard for managing every piece of content, containerized end to end with Docker.
Overview
Sulakshana Truck & Body Techno is a full-stack platform built with Flask and PostgreSQL (via Flask-SQLAlchemy), structured around blueprints that cleanly separate the public site, the admin dashboard, and authentication. The homepage renders a hero banner carousel, services, client logos, and a work gallery, with a dedicated gallery page that filters by category.
Behind the public site sits a session-based admin dashboard, gated by bcrypt password hashing and PyJWT tokens, where the business owner manages banner images, services, gallery items, client logos, and staff accounts — full CRUD on every content type, plus live content counts on the dashboard home.
Flask-Migrate handles schema changes as the data model evolves, and the whole app is containerized with Docker (a separate Postgres container included) and served via Gunicorn/Waitress, self-hosted on AWS Lightsail under the business's own custom domain.
Public Website
- Hero banner carousel, services, client logos, and a work gallery on the homepage, all pulled live from the database.
- A dedicated gallery page with category filtering for browsing completed truck body and fabrication work.
- Served under the business's own custom domain, with CORS enabled for API access.
Admin Dashboard
- Session-based admin login secured with bcrypt-hashed passwords and PyJWT auth tokens.
- Full CRUD for banner images, services, gallery items, client logos, and system users — all content editable without touching code.
- Dashboard home with live counts across every content type for a quick overview.
Backend, Data & Deployment
- Flask blueprints separate public routes, admin routes, and auth cleanly across the codebase.
- PostgreSQL via Flask-SQLAlchemy with UUID primary keys and Flask-Migrate managing schema changes.
- Fully containerized with Docker (app + a dedicated Postgres container) and served with Gunicorn/Waitress.
- Self-hosted on AWS Lightsail, giving the client direct ownership of hosting, deployment, and the custom domain.