Foundation (Introduction)
Application Requirements

Application Development Requirements & Landscape

Functional Requirements

  • Local Authentication:

    • Implement local authentication using email and password.
    • Features include:
      • Hashed passwords
      • Email verification
      • Forgot password functionality
      • Ability to block users if necessary
  • Multiple Roles (Role-Based Access Control):

    • Admin: Can manage everything, including sales data.
    • Manager: Can view sales data, inventory, and products, but cannot create anything.
    • Delivery Person: Can manage queue orders and update their status.
    • User: Can view products, read reviews, and place orders, but cannot access admin information.
    • Other Role: [Include specific role details if applicable]
  • Order Management: (common example)

    • Users can place orders.
    • Users can view existing reviews and only post a review after a successful order.
    • Sales dashboard
    • Manage inventory
    • Live tracking of the order
  • Sales Dashboard:

    • A dashboard to view sales data.
  • Inventory Management:

    • Manage product inventory.
  • Live Tracking of Orders:

    • Users can track the status of their orders in real-time.

Non-Functional Requirements:

  • Secure: The system must ensure data protection.
  • Reliable: The system must function correctly under expected conditions.
  • Easy Maintainability: The system should be easy to update and maintain.
  • Awesome Usability: The system should provide a great user experience.
  • High Availability: Not a primary concern for the MVP.
  • Scalability: Not a primary concern for the MVP.

Choose Necessary Technology

Requirements: (SRS - Software Requirement Specification)

Requirement Analysis & Design

System Design

  • Architectural Decisions:
    • Monolithic (Easy to develop, but very complex to maintain when application grows)
    • Microservice (Very hard to develop, but easy to maintain)
    • Serverless (FAAS - Function as a Service)

Select Database:

Software Architecture

Software Architecture is directly related to coding. It entirely depends on system design. To understand software architecture, we need to know the following:

  • Object-Oriented Programming (OOP)
  • OOP Design Patterns & Principles
  • Data Structures & Algorithms (DSA)
  • Clean Code Architecture
  • Problem Solving

Testing

  • Test Driven Development (TDD) - (Write the test code first, then write the main code)
  • End-to-End (E2E) Testing - (Testing the application using a headless browser to simulate real user interactions across the entire system)

Distribution

Development Steps:

  1. Requirements
  2. Design
  3. Implementation:
    • UI/UX Design
    • Web Design
    • Frontend Development
    • Backend Development
    • Test Code
  4. Testing, Deployment
  5. Maintenance