Lot and Found: A Parking Management System with Flask
… because musical chairs should stay in kindergarten, not parking lots.
Why This Project
Finding a parking spot shouldn’t be harder than the actual drive. Yet, in cities, it often is. Parking management isn’t easier for admins either: messy records, no real-time view, and lots of manual work.
Get Priyal Pandey’s stories in your inbox
Join Medium for free to get updates from this writer.
That’s where Lot and Found comes in — a full-stack parking management system I built as part of my coursework at IIT Madras. While it’s not a full-fledged smart parking system (no IoT sensors or real-time automation…yet), it lays the foundation with features like booking, payments, and usage insights.
The Tech Stack:
- Backend: Flask + SQLite (SQLAlchemy ORM)
- Frontend: HTML, Jinja2, Bootstrap, CSS
- Visualization: Chart.js for occupancy and usage charts
Features
For Users:
- Browse parking lots with filters like price, location, or shaded/open
- Book instantly with automatic spot allocation
- Track live booking status and release spots when done
- Automatic cost calculation based on booking duration
- View booking and transaction history
For Admins:
- Create, edit, and delete parking lots
- View individual spots and their status in real time
- Search lots based on parameters like price and location
- Access all registered users and their booking activity
- View complete transaction history
- Analyze occupancy with interactive charts
The app is responsive across devices and includes both frontend and backend validation for smooth user experience.
What I Learned
This was more than just ticking boxes on a project requirement list.
- Designing a scalable database schema:
I learned how to break down real-world entities into normalized tables and relationships. For example, separating reservations, payments, and spots gave the system flexibility and avoided redundancy. This exercise taught me how important schema design is when multiple roles interact with the same data. - Importance of validation at multiple layers:
Frontend validation (HTML5) improved usability, while backend validation (Flask checks) ensured security and data consistency. I realized that trusting just one layer is risky — robust systems need checks everywhere. - Modularity in project structure:
Organizing routes, models, templates, and static files in separate components made the project easier to debug and extend. It gave me a real taste of maintainable software engineering practices rather than just “getting code to work.” - Balancing functionality with user experience:
Features like automatic spot allocation and responsive design may seem small, but they drastically improved usability. I saw how small design choices can make or break the overall user experience. - Value of visualization:
Adding charts wasn’t just for aesthetics — it turned raw data into insights. Occupancy and usage trends helped highlight parking behavior that would be invisible in plain tables. - Iterative development mindset:
I didn’t build everything at once. The project grew step by step — starting with authentication, then adding booking, then payments, and finally dashboards and charts. This taught me the importance of milestones and building incrementally. - Problem-solving beyond coding:
Every new feature brought questions — how do you prevent double-booking? How should costs be calculated fairly? Answering these made me think critically, not just in terms of syntax, but in terms of system design and real-world constraints.
Links
Final Thoughts
This project started as coursework but became a hands-on lesson in problem-solving, full-stack development, and design thinking.




