Sprint Challenge: Design Document

Challenge Objective

Create a comprehensive design document for your Learn and Be Curious project. This document should outline your project's architecture, data models, API design, and DynamoDB tables. It will serve as a roadmap for your implementation and a reference for your team.

Design Document Template

Your design document should include the following sections:

1. Problem Statement

A clear, concise description of the problem your project aims to solve. This should include:

  • The primary purpose of your application
  • The key challenges or pain points being addressed
  • The target users or audience for your solution
  • The value proposition - why your solution matters

2. Use Cases

Detailed descriptions of how users will interact with your system. For each use case, include:

  • A descriptive title (e.g., "User Creates a New Playlist")
  • Actor (who is performing the action)
  • Preconditions (what must be true before the use case begins)
  • Main success scenario (step-by-step flow)
  • Alternative paths or exception cases
  • Postconditions (what is true after the use case completes)

3. API Design

Define the API endpoints your application will expose, including:

  • Endpoint path and HTTP method (e.g., GET /playlists/{id})
  • Request parameters (path, query, body)
  • Sample request body (if applicable)
  • Response codes and descriptions
  • Sample response body

4. DynamoDB Table Design

Detail your DynamoDB tables, including:

  • Table names
  • Primary key structure (partition key and sort key if used)
  • Attributes and their data types
  • Global Secondary Indexes (if needed)
  • Example items

5. Frontend Design

Outline your application's user interface, including:

  • Wireframes or mockups of key screens
  • User flow diagrams
  • Component hierarchy
  • State management approach

Submission Guidelines

Submit your design document by following these steps:

  1. Create your design document in the designated location in your project repository
  2. Ensure all team members have reviewed and contributed to the document
  3. Make sure your document covers all required sections
  4. Submit a link to your document according to your instructor's directions

Evaluation Criteria

Your design document will be evaluated based on:

  • Completeness: All required sections are included
  • Clarity: Ideas are clearly communicated
  • Technical soundness: The design is technically feasible
  • Consistency: The different components work together logically
  • Scope: The project is appropriately scoped for the timeframe

Design Document Examples

Below are links to example design documents that you can use as references:

Example 1: E-commerce Product Management

A system for managing product inventory, orders, and customer accounts for an online store.

Problem Statement:
Small businesses need an affordable way to manage their online product catalogs and process orders.

API Endpoints:
GET /products - List all products
POST /products - Add a new product
GET /products/{id} - Get details for a specific product
PUT /products/{id} - Update a product
DELETE /products/{id} - Remove a product

DynamoDB Tables:
Products Table
- PK: productId (string)
- Attributes: name, description, price, category, inventory

Orders Table
- PK: orderId (string)
- Attributes: customerId, orderDate, totalAmount, status, items

Example 2: Task Management System

A collaborative task management system for teams to organize projects and track progress.

Problem Statement:
Teams need a simple way to assign, track, and prioritize tasks across projects.

API Endpoints:
GET /projects - List all projects
POST /projects - Create a new project
GET /projects/{id}/tasks - List tasks for a project
POST /projects/{id}/tasks - Add a task to a project
PUT /tasks/{id} - Update a task's status or details

DynamoDB Tables:
Projects Table
- PK: projectId (string)
- Attributes: name, description, ownerId, createdDate

Tasks Table
- PK: taskId (string)
- Attributes: projectId, title, description, assignee, status, dueDate, priority

Tips for Success

  • Start early: Give yourself plenty of time to think through your design
  • Iterate: Your first design might not be your final design - be willing to revise
  • Seek feedback: Share your design with peers and instructors for input
  • Consider scalability: Design with future growth in mind
  • Test with use cases: Validate your design against your use cases to ensure it meets requirements