1MEIC06T03: APLens - FEUP-MEIC-DS-2024-25/ai4sd GitHub Wiki
Vision
Misaligned architectural patterns lead to scalability, maintainability, and costly refactoring issues in software projects. With APLens there is no need to waste time analyzing multiple files in order to assess the quality of the implementation these patterns. Pick your GitHub repository and picking a specific architectural pattern and have your pattern implementation analyzed in a matter of seconds.
Research
POSA patterns - Pattern Oriented Software Architecture
Listing most common architectural patterns.
Cloud Adoption Patterns, Kyle Geen Brown
Architectural patterns on the cloud engineering context.
Domain Analysis
Class Diagram
Activity Diagram
Sequence Diagram
Architecture and design
Technologies
Frontend
For the implementation of the front-end ReactJS was the clear choice. It offers a component based architecture that helps isolating each components logic and, therefore, development. It's fast and scalable. For style, we picked Tailwind as it easily adapts to the ReactJS development process.
Backend
The back-end was built in Python, more precisely, Django. A powerful and pragmatic framework that combines the ease of use of Python and many buil-in operations ideal for creating a simple server.
Storage
We use Firestore - a cloud NoSQL database - to store user query histories. This way, our users will be able to consult older queries.
Development guide
Frontend
First, install the dependencies of the project
npm install
You're now ready to run the project
npm start
frontend/src/components
This file is where components are stored
frontend/src/pages
This file is where pages are stored
Backend
Run backend/manage.py
python3 manage.py runserver
Script
Run start_servers.sh
to automatically initialize both backend and frontend.
./start_servers.sh
Security concerns
As our tool allows for the analysis of private repositories, we intend their data to remain that way. Therefore, we assure no data coming from a private repository will be used to train LLM models.
Quality assurance
🔧
How to use
- Choose the repository you want to analyze!
- If the repository is private provide us with its access token.
- Pick the Pattern you want to analyze
- Submit and wait for your results!
How to contribute
0. Prerequisits
Be sure to have all the needed technologies installed (check them here)
1. Cloning the repository
Use a password-protected SSH key
git clone [email protected]:FEUP-MEIC-DS-2024-25/T06_G03.git
Clone using the web URL
git clone https://github.com/FEUP-MEIC-DS-2024-25/T06_G03.git
2. Contribute!
- If you have any suggestion or bug report feel free to open an issue!
- Feel free to contribute by making a Pull Request!
Sprints
This section is focused on showing the team's progress based on the teams' Scrum Board status in the end of each sprint.
Sprint 1
Retrospective
What Went Well
Everything we planned was implemented. In an early stage we already have a well composed product.
What Went Wrong
Even though we managed to successfully achieve our goal in this sprint, it would be undoubtedly better do distribute the workload evenly throughout the sprint.
What Can We Do To Improve
Try to do little tasks more often instead of allocating a lot of time on a specific day.
Sprint 2
Retrospective
What Went Well
A lot of work was done in the history of submissions and on the UI and UX of our web-app. The progression of our work was visible.
What Went Wrong
There were two tasks we didn't manage to finish.
What Can We Do To Improve
Be more thorough on the work we commit ourselves into.
Sprint 3
Retrospective
What Went Well
The final product of our project resulted in an easy and well design web app. It seamlessly allows for pattern implementation evaluation in any GitHub repository. We managed to finish most of our main goals.
What Went Wrong
The start of this last sprint's work, was a little delayed and this resulted in our team not being able to tackle some problems with would like to.
What Can We Do To Improve
Instead of allocating 3 hours to do a task, trying to do it in evenly separated blocks of time can help us starting to work earlier and better predict the actual effort we need to put into our endeavors.
Future Work
In order to finish our project's vision, there are two things to be implemented:
- Integrate Firestore on production so the already implemented submissions history can be used
- Fine tune the answers provided by the LLM
Happiness Meter
Levels (bad to excelent): 🗑 < 🤮 < 🤙 < 👌 < 🥰
Diogo Fernandes | Hélder Costa | Henrique Gardê | Jaime Fonseca | João Silva | |
---|---|---|---|---|---|
Diogo Fernandes | ❌ | 🥰 | 🥰 | 🥰 | 🥰 |
Hélder Costa | 🥰 | ❌ | 🥰 | 🥰 | 🥰 |
Henrique Gardê | 🥰 | 🥰 | ❌ | 🥰 | 🥰 |
Jaime Fonseca | 🥰 | 🥰 | 🥰 | ❌ | 🥰 |
João Silva | 🥰 | 🥰 | 🥰 | 🥰 | ❌ |