verdant-group

byAkib Riyaz

Act as a senior software architect. I want to build a group expense and bill decision application. Main problem: When friends go to restaurants, trips, or parties, nobody wants to pay the bill and people also forget who owes money. Core features: * Create group * Add friends * Add bill * Split bill equally * Custom split * Random spinner to decide who pays * Track who owes money Tech stack: Frontend: Next.js Backend: ASP.NET Core Web API Database: SQL Server Your task: 1. Design the complete system architecture. 2. Suggest database tables and relationships. 3. Design API endpoints. 4. Explain how to implement the random spinner logic. 5. Suggest scalable architecture for thousands of users. 6. Suggest folder structure for ASP.NET backend. Provide the answer like a real software architect.

Landing
Landing

Comments (0)

No comments yet. Be the first!

System Requirements

System Requirement Document

System Requirements Document (SRD) for verdant-group

1. Introduction

The verdant-group application is a group expense and bill decision-making app designed to simplify the process of managing shared expenses among friends, family, or colleagues. It addresses the common problem of tracking shared expenses, splitting bills, and deciding who pays in group settings such as restaurants, trips, or parties. This document outlines the system requirements for the development of the verdant-group app, ensuring a seamless and user-friendly experience for users in India (IN) and beyond.


2. System Overview

The verdant-group app will allow users to:

  • Create groups and add members.
  • Add bills and split them equally or customize the split.
  • Use a random spinner to decide who pays the bill.
  • Track who owes money and manage transactions effectively.

The app will be available as a mobile application (iOS and Android) and a web application. It will leverage modern technologies to ensure scalability, security, and a smooth user experience. Locale-specific features such as INR currency, Indian time zones (IST), and culturally relevant UI/UX will be prioritized.


3. Functional Requirements as Story Points

  • As a User, I should be able to register and log in securely.
  • As a User, I should be able to create a group and add friends to it.
  • As a User, I should be able to add a bill to a group.
  • As a User, I should be able to split the bill equally among group members.
  • As a User, I should be able to customize the split of a bill.
  • As a User, I should be able to use a random spinner to decide who pays the bill.
  • As a User, I should be able to track who owes money and view transaction history.
  • As a User, I should be able to settle payments and update the balance.
  • As an Admin, I should be able to manage group members (add/remove members).
  • As a User, I should be able to receive notifications for pending payments or group updates.

4. User Personas

1. Admin

  • Role: Manages group settings and members.
  • Responsibilities:
    • Create and delete groups.
    • Add or remove members from a group.
    • View and manage all bills and transactions within the group.

2. User

  • Role: Regular group member.
  • Responsibilities:
    • Participate in groups.
    • Add bills and split expenses.
    • Use the random spinner to decide who pays.
    • Track balances and settle payments.

3. Guest

  • Role: Unregistered user exploring the app.
  • Responsibilities:
    • View a demo of the app’s features.
    • Register to access full functionality.

5. Visuals Colors and Theme

Color Palette:

  • Primary Color: Emerald Green (#2ecc71) – Represents growth, balance, and harmony.
  • Secondary Color: Deep Blue (#34495e) – Adds a sense of trust and professionalism.
  • Accent Color: Golden Yellow (#f1c40f) – Highlights interactive elements like buttons and notifications.
  • Background Color: Soft White (#f9f9f9) – Ensures a clean and modern look.
  • Error/Alert Color: Crimson Red (#e74c3c) – Used for errors and warnings.

Typography:

  • Primary Font: Roboto (Sans-serif) – Clean and modern.
  • Secondary Font: Open Sans – For headings and emphasis.

Icons and Illustrations:

  • Use flat, minimalistic icons with a focus on clarity.
  • Illustrations should be friendly and relatable, depicting group activities like dining, traveling, and partying.

6. Signature Design Concept

Interactive Group Hub with Dynamic Spinner Animation

The verdant-group app will feature an Interactive Group Hub as its homepage. This hub will serve as the central dashboard for users, showcasing all their groups, pending bills, and balances in a visually engaging manner.

Key Features:

  1. Dynamic Group Cards:

    • Each group will be represented as a card with a unique color and icon.
    • Hovering over a card will flip it to reveal a summary of the group’s balances and pending bills.
  2. 3D Random Spinner:

    • The spinner will be a 3D wheel that users can spin with a swipe or tap.
    • The wheel will feature avatars or initials of group members, and it will spin with a realistic physics-based animation.
    • Confetti animation will trigger when the spinner lands on a member, adding a fun and celebratory touch.
  3. Real-Time Balance Updates:

    • The homepage will display real-time updates of balances and transactions for each group.
    • Micro-interactions like subtle animations will highlight changes in balances.
  4. Personalized Greetings:

    • The app will greet users with personalized messages based on the time of day (e.g., “Good Evening, Akib!”).
  5. Dark Mode:

    • A toggle for dark mode will be available, with a sleek black-and-green theme for nighttime use.

7. Non-Functional Requirements

  • Performance: The app should load within 2 seconds for all major operations.
  • Scalability: The system should support up to 100,000 concurrent users.
  • Security: All sensitive data (e.g., passwords, transactions) must be encrypted.
  • Availability: The app should have 99.9% uptime.
  • Localization: Support for INR currency and Indian time zones by default.
  • Cross-Platform Compatibility: The app must work seamlessly on Android, iOS, and web browsers.

8. Tech Stack

Frontend:

  • React Native: For cross-platform mobile app development.
  • React: For the web application.

Backend:

  • Python: For backend logic.
  • FastAPI: For building RESTful APIs.

Database:

  • MySQL: For relational data storage.
  • Alembic: For database migrations.

AI Models:

  • GPT 5.2: For user-friendly responses and suggestions.
  • Google Nano Banana: For generating custom illustrations and spinner animations.

AI Tools:

  • Langchain: For AI workflow orchestration.
  • Litellm: For routing between AI models.

Orchestration:

  • Docker: For containerization.
  • Kubernetes: For server-side orchestration.

9. Assumptions and Constraints

  • Users will have access to stable internet connections.
  • The app will initially target the Indian market, with potential for global expansion.
  • The random spinner feature will use a fair randomization algorithm.
  • The app will comply with GDPR and Indian data protection laws.

10. Glossary

  • Group Hub: The central dashboard where users can view and manage their groups.
  • Random Spinner: A feature that randomly selects a group member to pay the bill.
  • Custom Split: A feature that allows users to split bills unequally based on individual contributions.
  • JWT: JSON Web Token, used for secure authentication.
  • IST: Indian Standard Time.

This SRD provides a comprehensive roadmap for the development of the verdant-group app. Let me know if you’d like to refine or expand any section further, Akib!

Landing: View Demo
Login: Sign In
Dashboard: View Groups
Group: Manage Members
Group: Add Remove Member
Bills: View All Bills
Transactions: Review History