Welcome to answer

Your guide to understanding the codebase

Learning Path

17 units • 5 levels

Orchestration & APIs

  • Pipelines, workflows, public interfaces • 4 units
  • HTTP Layer & API Basics
  • HTTP Server & Request Handling
  • Application Architecture & Setup
  • Data Layer Fundamentals

Core Logic & Data

  • Business rules, schemas, models • 3 units
  • Frontend Integration
  • Dependency Injection & Service Layer
  • Security & Access Control

Interaction & Integration

  • UI components, external connectors • 3 units
  • Integration & External Services
  • Activity & Notification Pipeline
  • Content Management Systems

Cross-Cutting Concerns

  • Auth, logging, config, testing • 2 units
  • Production Deployment & Operations
  • Moderation & Review Systems
  • Edge Cases & Resilience

Additional Data Model Patterns

  • Additional Error Handling Patterns

Test Your Knowledge

Test your deep understanding of the codebase

Your Challenge

Add a content versioning system that tracks changes to answers over time. When users edit their answers, the system should save the previous version before applying the update, allowing users to view edit history and optionally revert to a previous version. This will help with transparency and allow recovery from accidental edits or vandalism.

Starting Points

  • cmd/command.go:1-87
    Examine how the application initializes services and database connections. You'll need to understand the service layer pattern used here.

  • Dockerfile:1-75
    Review the application structure and how migrations are handled. You may need to create a new migration for the version history table.

  • docs/swagger.json:1-96
    Study the existing API structure and response formats. Your new endpoints should follow the same patterns for consistency.

  • charts/values.yaml:1-104
    Understand the deployment configuration. Consider how version history might impact storage and database performance in production.

Success Criteria

  • A new database table stores answer versions with all necessary fields and proper foreign key constraints
  • Every answer edit creates a version record before applying the update
  • API endpoint returns paginated version history for a given answer
  • Users can view the content of any previous version without affecting the current answer
  • Answer authors can revert to a previous version, which itself creates a new version entry
  • Unauthorized users cannot revert answers they don't own (returns 403 Forbidden)
  • The application builds successfully: go build ./cmd/...
  • Database migrations run without errors

Hints

  1. Understanding the data layer conceptual
  2. Where updates happen code location
  3. Database schema considerations implementation
  4. API design approach implementation
  5. Transaction safety implementation

Prerequisites

  • Database schema design and migrations
  • Repository pattern
  • RESTful API design
  • Database transactions
  • Authorization and access control