Personal Product

programemos.dev

A platform designed to help people learn programming through practical, structured, and engaging experiences.

Overview

Programemos.dev is an educational platform created to centralize the programming learning experience in one place, providing practical, structured content entirely in Spanish.

Users can freely access the blog to read technical articles, programming guides, and software development content without creating an account.

Once registered, users unlock a gamified experience where they earn experience points, level up, maintain learning streaks, and unlock achievements as they progress.

The Academy offers hands-on coding exercises, while Learning Paths organize content into structured courses. Roadmaps help users understand which technologies to learn based on their career goals.

The platform also includes practical projects to strengthen developers' portfolios, a community to share progress, and useful tools that simplify everyday development tasks.

The main goal of the product is to provide a complete learning experience that combines theory, practice, community, and progress tracking within a single platform.

My Role

  • Designed the overall Full Stack architecture of the platform.
  • Developed the frontend using Next.js, React, and TypeScript.
  • Built the backend using NestJS, Prisma, and PostgreSQL.
  • Designed the database schema and data model.
  • Implemented authentication and authorization using Auth0.
  • Designed the platform's user experience and interface in Figma.
  • Developed the administration panel for content management.
  • Implemented the gamification system, including levels, experience, streaks, and achievements.
  • Continuously maintain and evolve the product.

Implemented Modules

01

Blog

Public technical articles organized by categories and tags, accessible without registration.

02

Dashboard / Adventure

Personal dashboard featuring levels, experience, learning streaks, progress tracking, and recommended next steps.

03

Academy

Hands-on coding exercises designed to reinforce programming skills through practice.

04

Learning Paths

Structured courses organized into modules and lessons for progressive learning.

05

Roadmaps

Interactive roadmaps that guide users through the technologies and skills required for different career paths.

06

Projects

Practical software projects that allow learners to apply their knowledge and build real-world experience.

07

Community

A social space where developers can share posts, interact with others, and track community progress.

08

Profile & Achievements

Public profile displaying user statistics, unlocked achievements, and overall learning progress.

09

Developer Tools

A collection of utilities including README generators, JSON formatters, and other productivity tools.

10

Admin Panel

Content management system for creating and maintaining articles, courses, exercises, and learning resources.

Technical Challenges

01

Designed a scalable architecture capable of supporting multiple independent modules within a single platform.

02

Maintained a clean separation between frontend, backend, and data access layers to ensure long-term maintainability.

03

Designed a flexible database model capable of supporting courses, exercises, users, gamification, and community features.

04

Implemented secure authentication and authorization using Auth0 and JWT.

05

Built a consistent user experience across all platform modules.

06

Developed an administration panel that enables content management without requiring code changes.

Technology Stack

Frontend

  • Next.js 16 (App Router)
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Auth0
  • react-markdown + remark-gfm
  • ESLint + React Compiler

Backend

  • NestJS
  • TypeScript
  • Prisma + PostgreSQL
  • Passport JWT + Auth0
  • class-validator / class-transformer
  • Express (Nest Platform)

Tools

  • Node.js
  • Git
  • GitHub
  • Vercel
  • Postman
  • Jest
  • Supertest
  • Prettier

Key Learnings

  • Planning a product before writing code leads to better architectural decisions.
  • Designing with the user experience in mind is just as important as implementing features.
  • Building a complete product requires balancing development, design, performance, and maintainability.
  • Creating a product from scratch strengthened my ability to make technical decisions and solve problems independently.
  • Developing my own product allowed me to understand the entire software development lifecycle, from idea to production.

Gallery

A visual walkthrough of some of the platform's main features and modules.