https://github.com/maria-parreira/smarthome-switch-dev
Web app that allows users to manage their homes - developed during SWITCH Dev
https://github.com/maria-parreira/smarthome-switch-dev
ddd-patterns java javascript mysql-database onion-architecture reactjs rest-api solid-principles spring-boot
Last synced: 8 days ago
JSON representation
Web app that allows users to manage their homes - developed during SWITCH Dev
- Host: GitHub
- URL: https://github.com/maria-parreira/smarthome-switch-dev
- Owner: maria-parreira
- Created: 2024-07-26T16:04:19.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-17T10:31:36.000Z (about 1 year ago)
- Last Synced: 2025-03-11T06:25:19.115Z (8 months ago)
- Topics: ddd-patterns, java, javascript, mysql-database, onion-architecture, reactjs, rest-api, solid-principles, spring-boot
- Language: Java
- Homepage:
- Size: 84.6 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smart Home Project
This project was developed by a group of students as part of the postgraduate program in Software Development (Switch) at the Instituto de Engenharia do Porto, during the academic year 2023-2024.
## Introduction
A Smart Home is a house or apartment that uses IT and networked devices to improve comfort, safety, security, and energy efficiency. Another important characteristic of many smart homes is the presence of electric power generation (e.g., solar panels) and/or storage (e.g., batteries).
For more information, you can refer to this [definition of a smart home](https://www.techtarget.com/iotagenda/definition/smart-home-or-building).

## Objective
The objective of this project is to develop a system that allows users to manage their smart homes, including the management of devices that encompass sensor and/or actuator behavior.
**The purpose is to practice:**
- Object oriented programming;
- Domain Driven Design;
- Onion Arquitecture;
- Database operations;
- REST API design;
- Software testing;
- SOLID principles and GRASP patterns;
- Build tools;
- Conteinerization.
## Non-Functional Requirements
- Agile approach.
- Java programming language.
- Test-Driven Development (TDD) approach.
- Minimum 95% of code coverage and mutation coverage of tests.
- Automatic and regression tests: unit tests (with isolation) for domain classes, and integration tests (without isolation) for controllers.
- All code, comments, and documentation in English.
- Visual representation using the C4 and 4+1 models.
- User interface developed using ReactJS.
- Responsive user interface (adapt the design of the forms to the type of device used by the user).
- Support persistence of information in a relational DB server.
- Obtain weather information from a specialized service through a REST API.
## Domain Model

## Getting Started
To get started with this project, follow these steps:
To set up the project locally, you will need:
- Java 17 or higher
- Maven 3.13.0 or higher
1. **Clone the repository:**
```sh
git clone https://github.com/your-repository-url.git
```
2. **Navigate to the project directory:**
```sh
cd smart-home-project
```
3. **Install dependencies:**
```sh
mvn install
```
4. **Run the backend:**
```sh
mvn spring-boot:run
```
5. **Access the user interface:**
```sh
cd frontend
npm install
npm run dev
```
6. **Hosting System on Tomcat Server and Connecting to Database Container**
- [for more info see this README.md](documentation/README.md)
## Contributors
- [Maria Parreira](https://github.com/mariaparreira-code)
- [Pedro Fernandes](https://github.com/PedroMSFernandes5)
- [Ricardo Araujo](https://github.com/RicardoAraujoSwitch)
- [Inês Guedes](https://github.com/InesGuedes-Switch)
- [Filipa Cardoso](https://github.com/filipacardoso)
- [Maria Neto](https://github.com/maria-neto)
- [Pedro Gil](https://github.com/PedroHGill)
- [Francisco Martins](https://github.com/FranciscoRamosMartins)
- [Tiago Pereira](https://github.com/tiagopereiraswitch)
- [Tomás Ferreira](https://github.com/1141142TF)