[ThemeCraft]
Abstract
ThemeCraft will allow users to automatically switch between themes when switching their device between light and dark modes. It will be designed to be deployed across multiple devices and operating systems. With a codebase that focuses on maintainability, ThemeCraft will remain adabptable and allow for seamless updates. This app will make your device a true reflection of your style and mood.
Author
Name: Aadya Bhatia
Student number: 47017553
Functionality
Dynamic wallpaper switching: allows users to set different wallpapers and colour schemes for light and dark mode automatically based on system settings
Theme customization: allow users to customize the design of their wallpaper, widgets, app icons, keyboard, colour palette for things like menu, notifications, and default apps like “phone” and “messages”
Theme Gallery: a gallery of themes to browse, download, upload, and share
Apply Theme: applies custom theme to phone
Scope
- A simple gallery to browse and download wallpaper images
- Ability to apply wallpaper to to multiple different devices with different screen resolutions
- Selecting different wallpapers / colour palettes for different scenarios
- home screen
- lock screen
- light mode
- dark mode
- sleep mode
Quality Attributes
Deployability: the app can be distributed and installed on different operating systems and device versions.
Maintainability: the app can be easily updated for new device resolutions, device updates, bug fixes, and feature enhancements
Evaluation
Maintainability
Can use SonarQube, a static code analysis tool to find vulnerabilities in the code to keep the code maintainable
- Highlights areas that need simplification or refactoring by evaluating code using code quality metrics like complexity, duplications, technical dept ratio
- Help identify code smells (bad code patterns) that could complicate the code overtime
- Ensure maintainability issues are identified early by using continuous integration with GitHub actions to automatically analyse the code with each commit to ensure
- Check that new code doesn’t introduce maintainability issues by analysing GitHub pull requests before they are merged into the main branch
Deployability
- Use Docker to package the app and its dependancies so that containers can be easily deployed across different eviornments to thest the app across multiple devices and operating systems.
- Use GitHub Actions to automate the testing, building and deployment of ThemeCraft to deploy updates efficiently. Regularly deploy updates and monitor any issues during the processs.
- Use terraform to define computing environments and check that the app functions as expected in these environments