Αυτό το repository περιέχει την εργασία για το μάθημα Τεχνολογία Λογισμικού (SoftEng) για το ακαδημαϊκό έτος 2025-2026. Αποτελείται από ένα πλήρες σύστημα διαχείρισης φορτιστών ηλεκτρικών οχημάτων, το οποίο περιλαμβάνει Backend API, Frontend Web Application, Command Line Interface (CLI) και Βάση Δεδομένων.
Μέλη Ομάδας:
- Κωνσταντόπουλος Γεώργιος (03122104)
- Πολυμέρη Βασιλική - Σπυριδούλα (03122641)
- Πουλόπουλος Ηλίας (03122160)
- Φραγκονικολάκη Κυριακή (03121215)
Το Backend είναι υλοποιημένο σε Node.js χρησιμοποιώντας το Express.js framework.
- Γλώσσα: JavaScript (Node.js)
- Framework: Express.js
- Database: MySQL
- Libraries:
cors: Για διαχείριση Cross-Origin Resource Sharing.multer: Για διαχείριση upload αρχείων (CSV).csv-parser: Για ανάγνωση αρχείων CSV.axios: Για επικοινωνία με εξωτερικά API.
- Security: HTTPS με self-signed certificates (OpenSSL).
Το Frontend είναι μια Web εφαρμογή υλοποιημένη με React.
- Framework: React.js
- Styling: CSS / React Scripts
- Maps:
@react-google-maps/apiγια χάρτες. - HTTP Client:
axiosγια επικοινωνία με το Backend.
Ένα εργαλείο γραμμής εντολών για διαχειριστικές λειτουργίες και αλληλεπίδραση με το σύστημα.
- Γλώσσα: Node.js
- Entry Point:
se2503.js - Λειτουργικότητα: Διαχείριση σταθμών, συνεδριών, φορτιστών, συντήρησης και εκτύπωσης στοιχείων από διαχειριστές ή third parties.
Η βάση δεδομένων είναι σχεσιακή, υλοποιημένη σε MySQL.
- Σύστημα: MySQL Server
- Όνομα Βάσης:
voltes_db - Διαχείριση: Μέσω SQL scripts και API endpoints.
Επειδή το repository είναι private, χρειάστηκε η εγκατάσταση του Github Desktop και να συνδεθούμε με τους λογαριασμούς μας στο github για να δουλέψει το clone.
Διαφορετικά σε ένα terminal σε έναν κενό φάκελο θα μπορούσαμε να:
git clone https://github.com/ntua/softeng25-03.git- Βεβαιωθείτε ότι έχετε εγκαταστήσει και τρέχετε τον MySQL Server.
- Συνδεθείτε στην MySQL και εκτελέστε το script
back-end/database/db.sql. Αυτό θα δημιουργήσει τη βάσηvoltes_dbκαι όλους τους απαραίτητους πίνακες.
mysql -u <user> -p < back-end/database/db.sql- Εναλλακτικά, αν το API τρέχει, μπορείτε να κάνετε reset τη βάση μέσω του CLI ή του endpoint
admin/resetpoints.
se2503 resetpointsΣτοιχεία Σύνδεσης (Default):
- Host:
localhost - User:
ilias - Password:
1234 - Database:
voltes_db
Σημείωση: Αν έχετε διαφορετικά credentials, ενημερώστε το αρχείο back-end/api/server.js.
Το Backend χρησιμοποιεί HTTPS. Πρέπει να δημιουργήσετε self-signed certificates μέσα στον φάκελο back-end/api.
Ανοίξτε ένα terminal στο back-end/api και τρέξτε (αν έχετε openssl):
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodesΑυτό θα δημιουργήσει τα αρχεία key.pem και cert.pem που απαιτούνται από το server.js.
Μπορεί να ζητηθούν στοιχεία όπως κωδικό χώρας, κ.α. αλλά δεν είναι απαραίτητα.
- Πλοηγηθείτε στον φάκελο του API:
cd back-end/api - Εγκαταστήστε τα dependencies:
npm install
- Ξεκινήστε τον server:
npm start
Ο server θα τρέχει στο https://localhost:9876.
- Πλοηγηθείτε στον φάκελο του Frontend:
cd front-end - Εγκαταστήστε τα dependencies:
npm install
- Ξεκινήστε την εφαρμογή:
npm start
Η εφαρμογή θα ανοίξει στον browser (συνήθως http://localhost:3000).
Το CLI εργαλείο βρίσκεται στον φάκελο cli-client.
-
cd cli-client -
npm install
- Για να χρησιμοποιείτε την εντολή
se2503από παντού (χωρίς τοnodeμπροστά), μέσα στον φάκελοcli-clientτρέξτε:npm link
Η γενική μορφή είναι se2503 [scope] --param1 value1 ....
-
healthcheck: Έλεγχος καλής λειτουργίας του API.
se2503 healthcheck
-
resetpoints: Επαναφορά της βάσης δεδομένων στην αρχική κατάσταση (default data).
se2503 resetpoints
-
addpoints: Εισαγωγή σημείων φόρτισης από αρχείο CSV.
se2503 addpoints --source <filepath>
-
points: Εμφάνιση λίστας σημείων φόρτισης.
se2503 points --status [available|charging|reserved|offline] --format [json|csv]
-
point: Εμφάνιση λεπτομερειών για συγκεκριμένο σημείο.
se2503 point --id <charger_id>
-
reserve: Δέσμευση θέσης φόρτισης.
se2503 reserve --id <charger_id> --minutes <duration_in_minutes>
-
pointstatus: Ιστορικό κατάστασης σημείου φόρτισης.
se2503 pointstatus --id <charger_id> --from YYYYMMDD --to YYYYMMDD
-
newsession: Έναρξη νέας συνεδρίας φόρτισης (upload session).
se2503 newsession --id <charger_id> --starttime "YYYY-MM-DD HH:mm:ss" --endtime "..." --startsoc <%> --endsoc <%> --totalkwh <kwh> --kwhprice <price> --amount <cost>
-
sessions: Αναζήτηση ολοκληρωμένων συνεδριών φόρτισης.
se2503 sessions --id <charger_id> --from YYYYMMDD --to YYYYMMDD
-
updpoint: Ενημέρωση στοιχείων σημείου (status/price).
se2503 updpoint --id <charger_id> --status <new_status> --price <new_price>
Στον φάκελο test παρέχονται αρχεία συλλογών για το Postman, τα οποία μπορούν να χρησιμοποιηθούν για τον έλεγχο των API endpoints.
Voltes script.json: Σενάριο ελέγχου ροής.Voltes testin.json: Συλλογή για functional testing των endpoints.
Στον φάκελο test παρέχονται scripts για τον έλεγχο της λειτουργικότητας του CLI.
-
cli_test.sh: Ένα αναλυτικό script που εκτελεί functional testing. Ελέγχει:- Την ορθή εκτέλεση των εντολών.
- Τη διαχείριση σφαλμάτων (π.χ. λάθος ορίσματα, μη έγκυρα IDs, λάθος μορφή ημερομηνιών).
- Edge cases (π.χ. αρνητικές τιμές, ημερομηνίες στο μέλλον, start time > end time).
- Όλες τις υποστηριζόμενες εντολές (
healthcheck,resetpoints,addpoints,points,point,reserve,updpoint,newsession,sessions,pointstatus).
-
cli_script.sh: Ένα σενάριο ροής (demo script) που εκτελεί μια σειρά από ενέργειες για να επιδείξει τη λειτουργικότητα του συστήματος σε μια τυπική χρήση. -
test_points.csv: Αρχείο δεδομένων που χρησιμοποιείται από τα scripts για την εισαγωγή σημείων φόρτισης.
Για να τρέξετε τα tests (σε περιβάλλον Linux/Bash ή Git Bash στα Windows):
bash test/cli_test.sh
# ή
bash test/cli_script.shΟ φάκελος ai-log είναι κενός καθώς τα logs είναι αυτόματα αποθηκευμένα στο https://ailog.softlab.ntua.gr/.
Στον φάκελο documentation περιλαμβάνονται όλα τα απαραίτητα έγγραφα και διαγράμματα για το έργο:
-
Έγγραφο SRS (Software Requirements Specification)
- Αρχείο:
srs-softeng25-03.docx - Περιγραφή: Αναλυτική καταγραφή των απαιτήσεων του λογισμικού.
- Αρχείο:
-
UML Diagrams (Visual Paradigm)
- Αρχείο:
softeng25-03.vpp - Περιεχόμενα:
- Data design diagrams (ER / UML class)
- UML Activity / State diagrams
- UML class & API diagrams
- UML component & deployment diagrams
- Αρχείο:
-
API Specification
- Αρχείο:
openapi.yaml - Περιγραφή: Προδιαγραφές του API σε μορφή OpenAPI (Swagger).
- Αρχείο:
| Available Charger | Offline Charger | Reservation |
|---|---|---|
![]() |
![]() |
![]() |
| Location Permission | Filter by Price | Search |
|---|---|---|
![]() |
![]() |
![]() |






