Copilot Gen Project Ana.
README
Project Overview
This project is a mobile usage management application that allows customers to manage their mobile numbers, plan usage, and costs per month. The application also provides functionality to manage virtual phone numbers (view, add, delete, and rename). The application is built using the Flask stack for rapid prototyping and includes a backend, frontend, and a database.
Business Requirements
- Review Mobile Numbers: Customers should be able to review their mobile numbers, plan usage, and cost per month.
- Manage Virtual Phone Numbers: Customers should be able to view, add, delete, and rename virtual phone numbers.
- Unique and Randomly Generated Numbers: All phone numbers must be unique and randomly generated.
Technical Requirements
- Frontend Framework: Vaadin framework
- Backend: Java 17, Spring, and Spring Boot
- Database: MS SQL database
Jira Epics, Stories, and Tasks
Epic: User Management
Story: As a user, I want to register so that I can manage my mobile usage.
Task: Implement a registration form in the frontend.
- Description: Create a registration form using the Vaadin framework that collects user information such as username, password, email, and phone number.
- Acceptance Criteria:
- The form should have fields for username, password, email, and phone number.
- The form should validate the input fields.
- The form should display error messages for invalid inputs.
- Estimation: 3 hours
Task: Create a backend route to handle registration requests.
- Description: Implement a Spring Boot controller that handles registration requests and saves user data to the database.
- Acceptance Criteria:
- The backend route should accept POST requests with user data.
- The route should validate the user data.
- The route should return appropriate success or error responses.
- Estimation: 4 hours
Task: Store user data in the database.
- Description: Create a database schema and repository to store user data in the MS SQL database.
- Acceptance Criteria:
- The user data should be stored in the database.
- The database schema should include tables for users and their associated data.
- Estimation: 3 hours
Story: As a user, I want to login so that I can access my account.
Task: Implement a login form in the frontend.
- Description: Create a login form using the Vaadin framework that collects the username and password.
- Acceptance Criteria:
- The form should have fields for username and password.
- The form should validate the input fields.
- The form should display error messages for invalid inputs.
- Estimation: 2 hours
Task: Create a backend route to handle login requests.
- Description: Implement a Spring Boot controller that handles login requests and authenticates user credentials.
- Acceptance Criteria:
- The backend route should accept POST requests with username and password.
- The route should validate the user credentials.
- The route should return appropriate success or error responses.
- Estimation: 4 hours
Task: Authenticate user credentials and manage user sessions.
- Description: Implement authentication logic to verify user credentials and manage user sessions.
- Acceptance Criteria:
- The system should authenticate user credentials against the database.
- The system should create and manage user sessions upon successful login.
- Estimation: 5 hours
Acceptance Criteria
- All forms should have proper validation and display error messages for invalid inputs.
- Backend routes should handle requests and return appropriate responses.
- User data should be securely stored in the database.
- User sessions should be managed securely.
Estimations
- Registration Form (Frontend): 3 hours
- Registration Route (Backend): 4 hours
- Store User Data (Database): 3 hours
- Login Form (Frontend): 2 hours
- Login Route (Backend): 4 hours
- Authenticate User Credentials: 5 hours
Technical Constraints
- All phone numbers must be unique and randomly generated.
- The application should be built using the Vaadin framework for the frontend, Java 17, Spring, and Spring Boot for the backend, and MS SQL database for data storage.