Inspiration

As a software developer, I really enjoy reading about distributed systems. After reading "Designing Data-Intensive Applications" by Martin Kleppmann, I realized that distributed systems are incredibly complex and require hands-on experience to truly understand their intricacies. The book provided excellent theoretical knowledge, but I felt there was a gap in practical application. This led to the idea of creating a platform where developers could:

  • Practice building distributed systems in a simulated environment
  • Get hands-on experience with real-world system design challenges
  • Receive immediate feedback on their architectural decisions
  • Learn from detailed assessments and best practices
  • Build confidence in designing scalable and resilient systems

What it does

Distributed Design provides a comprehensive platform for developers to:

  1. Practice System Design: Users can work on carefully curated system design problems that simulate real-world scenarios
  2. Interactive Learning: Each problem comes with:
    • Detailed requirements and constraints
    • Step-by-step guidance
    • Real-time feedback
    • Performance metrics
    • Scalability considerations
  3. Assessment System:
    • Automated evaluation of design decisions
    • Detailed feedback on architectural choices
    • Performance analysis
    • Scalability assessment
    • Best practices recommendations
  4. Progress Tracking:
    • Track solved problems
    • Monitor improvement over time
    • Build a portfolio of system designs

How we built it

The platform was built using a modern tech stack with a focus on scalability and maintainability:

  1. Frontend Development:

    • Next.js for server-side rendering and optimal performance
    • React for building interactive user interfaces
    • TailwindCSS for responsive and modern design
    • Radix UI and Shadcn UI for accessible components
  2. Backend Architecture:

    • tRPC for type-safe API development
    • Prisma ORM for database operations
    • NextAuth.js for secure authentication
    • Perplexity API (sonar-deep-research) for intelligent assessment
  3. Database Design:

    • PostgreSQL for reliable data storage
    • Prisma for type-safe database operations
    • Efficient schema design for user data and problem tracking

Challenges we ran into

  1. Technical Challenges:

    • Building the canvas tab
    • implementing real-time voice transcription
    • Ensuring type safety across the full stack
    • Optimizing database queries for performance
  2. Design Challenges:

    • Creating an intuitive user interface for complex system design problems
    • Balancing detailed feedback with user experience
    • Ensuring accessibility across all features
    • Maintaining consistency in design patterns

Accomplishments that we're proud of

  1. Technical Achievements:

    • Successfully integrated tRPC for end-to-end type safety
    • Built a robust assessment system using Perplexity(sonar-deep-research) API
    • Implemented real-time feedback mechanisms
    • Created a scalable database architecture
  2. User Experience:

    • Developed an intuitive and responsive interface(especially canvas)
    • Created comprehensive problem templates
    • Implemented detailed progress tracking
    • Built an efficient feedback system
  3. Project Management:

    • Maintained consistent code quality
    • Established clear documentation
    • Created a maintainable codebase

What we learned

  1. Technical Insights:

    • Advanced usage of tRPC for type-safe APIs
    • Integration patterns for Sonar(sonar-deep-research) API
    • Best practices for distributed system design
    • Performance optimization techniques
  2. Development Practices:

    • Importance of type safety in full-stack development
    • Effective state management strategies
    • Database optimization techniques
    • API design best practices

What's next for DistributedDesign

  1. Short-term Goals:

    • Add more system design problems
    • Implement collaborative problem-solving features
    • Enhance the assessment system
    • Add more detailed feedback mechanisms
  2. Medium-term Goals:

    • Add system design competitions
    • Implement a community forum
    • Create a learning path system
  3. Long-term Vision:

    • Build a comprehensive system design learning platform
    • Create certification programs
    • Develop enterprise solutions
    • Establish partnerships with tech companies

Built With

Share this project:

Updates