Shortn.at — Version 1
Shortn.at v1 represents a major milestone in my journey as a developer. It was my first truly meaningful full-stack project — not a tutorial, not an academic exercise, but a real product designed, built, deployed, and used by real people.
At the time, my goal was simple: build something useful end-to-end and see what it actually means to maintain a product in production. The idea of a URL shortener emerged naturally, but I quickly realized that creating links was only part of the problem. Understanding how those links perform, how users manage them, and how the product evolves over time were just as important.
The first version of Shortn.at provided a complete feature set:
- Short URL creation with custom slugs
- Click tracking and basic analytics
- QR code generation for offline and print use cases
- Link-in-bio pages for aggregating multiple links under a single profile
- A clean dashboard to manage and organize links
- Custom JWT-based authentication
- Social authentication using Passport
- Full payment integration with Stripe for paid plans
From the beginning, Shortn.at was built as a single-user platform. This decision was intentional and strategic — it allowed me to validate the product, simplify early architectural decisions, and focus on shipping a stable experience before introducing multi-user or team-based complexity.
I was responsible for the entire technical stack. The frontend was built with React (Vite), TypeScript, and Tailwind CSS, with a strong emphasis on clean UI, responsive design, and maintainable components. The backend was implemented using Express.js (JavaScript) and MongoDB, where I designed the database schema, REST APIs, authentication flows, analytics tracking, and Stripe billing logic.
One of the most impactful learning experiences came from implementing authentication and payments from scratch. Building a custom JWT-based authentication system, integrating Passport for social login, and handling Stripe subscriptions introduced real-world concerns such as security, edge cases, webhook handling, and data consistency. These were problems no tutorial could fully prepare me for.
Shortn.at v1 became my first project with real production users when it was adopted by Vida Económica, a Portuguese business magazine, as a paid service. Supporting an actual business fundamentally changed how I approached development. Reliability, monitoring, backward compatibility, and the cost of breaking changes were no longer abstract concepts — they had direct consequences.
This project taught me how to think like a product engineer rather than just a developer. I learned how to:
- Design and deliver a full-stack application from concept to production
- Make architectural decisions with future scalability in mind
- Build secure authentication and payment flows
- Work with real user data and evolving requirements
- Balance speed, simplicity, and long-term maintainability
Shortn.at v1 laid the technical and conceptual foundation for everything that followed, including more advanced analytics, link-in-bio improvements, and scalable multi-tenant support in later versions. More importantly, it was the project that marked my transition into building software with real users, real constraints, and real impact.