ProjectProposal - poweredbygrace/Practice_Repo_-Wiki- GitHub Wiki
Android IT Ticketing System
Project Proposal & Sprint Plan - CSTP 2205
Overview of the Project
The project entails creating an IT Ticketing System for Android. This system enables employees to submit IT support tickets through an Android app, while IT support personnel can access, update, and resolve these tickets. The app targets around 20 internal users and is being developed by a team of three developers within a 9-week timeframe across 3 focused sprints. The emphasis is on core features to streamline delivery and reduce complexity.
Project Scope
Inclusions:
- Development of an Android app with Kotlin
- Implementation of secure authentication using JWT and bcrypt
- Functionality to create, view, update, and manage IT tickets
- Backend REST web service built with Ktor
- Utilization of a MongoDB Atlas cloud database
- Role-based access control for end users, IT agents, and managers
- Real-time ticket status updates and assignments
- Comment system for ticket communication
Exclusions (Future Features):
- Push notifications
- File uploads and attachments
- Web-based admin dashboard
- Advanced analytics and reporting
- Automated ticket routing
System Architecture
The system architecture is based on a client-server model. The Android app communicates with a backend web service via HTTPS using RESTful APIs. The backend manages authentication, business processes, and data retrieval, with all data stored in MongoDB Atlas.
Backend Web Service
The backend is created using Ktor, a lightweight Kotlin web framework designed for building asynchronous servers and clients. It offers RESTful endpoints for authentication and ticket management, implementing JWT (JSON Web Tokens) for secure session management and bcrypt for password hashing.
Database Setup
MongoDB Atlas serves as the cloud database solution, with four primary collections:
- Users: Stores user credentials, roles, and profile information
- Tickets: Contains all ticket data including status, priority, and assignments
- Comments: Manages ticket conversation history and internal notes
- Notifications: Tracks system notifications for users and agents
MongoDB was chosen for its adaptability, schema flexibility, seamless integration with Kotlin, and scalability for future growth.
Team Members
- Bhupinder Singh Atwal - Android UI Development & User Experience
- Michael Oteng-Adjei - Backend API Development & Database Configuration
- Salvador Alcantara - Authentication Systems & Deployment
Project Timeline
The project spans 9 weeks, divided into three 3-week sprints with clearly defined deliverables and responsibilities.
Sprint 1: Foundation – Database, API & Authentication
Duration: Weeks 1–3
Story: MongoDB Database Design & REST API Endpoints (ITS-32, ITS-20, ITS-33, ITS-19)
- Assignee: Michael Oteng-Adjei
- Weight: 3/10
Design and implement MongoDB database structure with collections for users, tickets, comments, and notifications. Develop RESTful API endpoints using Ktor for ticket CRUD operations, including request validation, pagination, filtering, and error handling.
Story: Authentication & Session Management (ITS-6, ITS-7, ITS-18)
- Assignee: Salvador Alcantara
- Weight: 4/10
Implement secure authentication using JWT and bcrypt. Enable user registration, login, session persistence, and role-based access control with token refresh mechanisms.
Story: Android App Navigation & Base UI Components (ITS-8)
- Assignee: Bhupinder Singh Atwal
- Weight: 3/10
Build foundational Android app structure including navigation architecture, reusable UI components, MVVM pattern setup, and authentication screens integrated with backend.
Sprint 1 Task Distribution
| User Story | Person Responsible | Weight |
|---|---|---|
| MongoDB Database Design & REST API Endpoints (ITS-32, ITS-20, ITS-33, ITS-19) | Michael Oteng-Adjei | 3 |
| Authentication & Session Management (ITS-6, ITS-7, ITS-18) | Salvador Alcantara | 4 |
| Android App Navigation & Base UI Components (ITS-8) | Bhupinder Singh Atwal | 3 |
Sprint 2: Core Features – Ticket Creation, Viewing & Management
Duration: Weeks 4-6
Story: Ticket Creation & List View UI (ITS-8, ITS-9, ITS-11)
- Assignee: Bhupinder Singh Atwal
- Weight: 3/10
Build ticket creation screen with form fields for title, description, priority, and category. Create ticket list interface displaying status, priority, assigned agent, and timestamps. Include validation, pull-to-refresh, and backend integration.
Story: Advanced API Filtering & Search Endpoints (ITS-13, ITS-14)
- Assignee: Michael Oteng-Adjei
- Weight: 4/10
Develop backend filtering and search capabilities using MongoDB text indexes. Support filtering by status, priority, date range, agent, and keyword search across ticket content.
Story: Role-Based Access Control & Ticket Permissions (ITS-10, ITS-12)
- Assignee: Salvador Alcantara
- Weight: 3/10
Implement role-based access control ensuring users see only their tickets while agents access all tickets. Create permission middleware and authorization logic for all endpoints.
Sprint 2 Task Distribution
| User Story | Person Responsible | Weight |
|---|---|---|
| Ticket Creation & List View UI (ITS-8, ITS-9, ITS-11) | Bhupinder Singh Atwal | 3 |
| Advanced API Filtering & Search Endpoints (ITS-13, ITS-14) | Michael Oteng-Adjei | 4 |
| Role-Based Access Control & Ticket Permissions (ITS-10, ITS-12) | Salvador Alcantara | 3 |
Sprint 3: Collaboration, Notifications & Management
Duration: Weeks 6-9
Story: Ticket Comments System (ITS-15)
- Assignee: Salvador Alcantara
- Weight: 3/10
Implement Ktor API endpoints for posting comments, retrieving history, and managing internal agent notes. Build Android UI for viewing comment threads and posting messages with visual distinctions between user and agent comments.
Story: Ticket Status Updates & Assignment (ITS-16, ITS-17)
- Assignee: Michael Oteng-Adjei
- Weight: 3/10
Develop workflow features for status updates (new, in-progress, waiting, resolved, closed) and ticket assignment. Implement real-time updates, change logging, and business rule enforcement.
Story: Firebase Notifications & Manager Dashboard (ITS-24, ITS-29, ITS-30)
- Assignee: Bhupinder Singh Atwal
- Weight: 4/10
Integrate FCM for real-time notifications on ticket events. Implement manager dashboard with system statistics (tickets by status, resolution time, agent workload) and role management features.
Sprint 3 Task Distribution
| User Story | Person Responsible | Weight |
|---|---|---|
| Ticket Comments System (ITS-15) | Salvador Alcantara | 3 |
| Ticket Status Updates & Assignment (ITS-16, ITS-17) | Michael Oteng-Adjei | 3 |
| Firebase Notifications & Manager Dashboard (ITS-24, ITS-29, ITS-30) | Bhupinder Singh Atwal | 4 |
Developer Status Updates
Format for Weekly Standups:
- What have I contributed since the last time we met? (Contribution)
- What will I have contributed before the next time we meet? (Next Steps)
- What am I stuck with that the team can help me with? (Challenges)
Current Status:
Bhupinder Singh Atwal:
- Contributions: Android UI design and navigation structure
- Next Steps: Finalize ticket screens and integrate with Ktor backend APIs
- Challenges: Aligning API responses with UI expectations, learning curve with Kotlin coroutines and Android lifecycle management
Michael Oteng-Adjei:
- Contributions: Ktor backend API development and MongoDB Atlas configuration
- Next Steps: Implement authentication endpoints and request validation middleware
- Challenges: Learning curve with Ktor framework features and MongoDB query optimization
Salvador Alcantara:
- Contributions: JWT authentication system development and database schema design
- Next Steps: Complete testing and prepare for deployment configuration
- Challenges: AWS Lightsail deployment setup and SSL certificate configuration, learning curve with security best practices
Reference Image


Tools
Project Management
- Jira Board: https://atlassian.net/jira/software/projects/
Database
- MongoDB Atlas: mongodb+srv://xxdb_user:xx@wond3r******
Version Control
- GitHub Repository: https://github.com/
Hosting
- Backend Server: Ktor application hosted on AWS Lightsail with Node.js runtime