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

image

Activity Diagram

image

Sequence Diagram

image

Architecture and design

image

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

  1. Choose the repository you want to analyze!
    • If the repository is private provide us with its access token.
  2. Pick the Pattern you want to analyze
  3. 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

image

Sprint 2

sprint-2-final

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 🥰 🥰 🥰 🥰

Contributions - Team 3

Product Owner

Diogo Fernandes

Scrum Master

Hélder Costa

Developers

Henrique Gardê

Jaime Fonseca

João Silva