Praport

Version 2 – Learnings

Version 2 was a major leap forward. After the experimental but functional V1, this phase was all about structure, scalability, and better user experience — both in code and in interface.

The biggest shift came in the form of modern frameworks. I transitioned from raw HTML/CSS/JS to React with Tailwind CSS, enabling modular UI design and a far more maintainable codebase. The frontend became smoother, more responsive, and easier to iterate on.

Version 2 landing page of Praport
Version 2 landing page — fully rebuilt with React and Tailwind.

On the backend, I moved from a single Python file with SQLite to a Supabase + Express.js combo. Supabase made authentication and database work way faster to implement — no need to worry about role-based access, email verification, or session persistence. Most of it just worked out of the box.

With Express as a lightweight server layer, I could safely handle third-party API communication, abstract logic, and secure API keys. This gave the project a more “real” backend feel while still staying lean.

One of the improvements of this version was deployment. Instead of dealing with file transfers or manual scripts, I used Vercel connected to GitHub. With each commit to the main branch, the site rebuilt and deployed automatically. Fast, efficient, and no downtime.

I also learned how to use routing, page transitions, and auth state logic in React using React Router and context providers. This allowed better control over protected routes, layout rendering, and more fluid navigation.

What I Learned

  • How to structure a React project using reusable components
  • Tailwind utility-first styling for speed and consistency
  • Supabase for authentication, database and serverless backend
  • Express server to safely handle third-party API requests
  • Working with environment variables for secure config
  • GitHub + Vercel CI/CD pipeline for fast deployments
  • How to separate frontend, backend, and API layers properly

More than anything, this version taught me how modern web applications are actually built — not just MVP or hobby project, but a functioning, real-world logistics tool with real user workflows.

And while there’s still a lot to learn, Version 2 was a massive step forward — a proper web application, built with modern standards, practices, and tooling.