Ovaj repozitorijum predstavlja projektni zadatak tima PAKT. Članovi tima su:
- Petar Ostojić - Jogurat
- Aleksa Jovanović - Aleksa-Jovanovic
- Ksenija Mladenović - ksenijam14
- Teodora Nedeljković - teodoranedeljkovic355
Projekat je hostovan na platformi Heroku, i može se videti na sledećem linku.
Cilj ovog projekta je da olakša života ljudi koji žive u potkrovljima, a osuđeni su na život bez pametne klime. Kako leti temperature dostižu neverovatno visoke brojke, scenario vraćanja kući je sledeći:
Ući u stan -> Popeti se na potkrovlje -> Upaliti klimu -> Vratiti se dole -> Sačekati 5 minuta -> Popeti se na potkrovlje i nastaviti normalno dan
Mi želimo da ovaj scenario uprostimo, tako da 10ak minuta pre nego što dođete kući:
Na telefonu otvorite internet pretraživač -> Odete na daljina.cc -> Ulogujete se na svoj nalog -> Upalite klimu preko jedne od kartica -> Dođete kući i pravo odete na potkrovlje 😊
Za izradu ovog projekta korišćen je Arduino Mega. Od ostalih bitnih komponenti imamo:
- ESP8266-01 WiFi Modul
- Infrared dioda
- Infrared transmiter
- Senzor temperature
Slika iznad je pokaznog karaktera, neke od pasivnih komponenti su drugačije ili nisu prikazane.
(Slika generisana na sajtu circuito.io koji sam dodaje pasivne komponente i ne dozvoljava dodavanje drugih)
Tehnolgoija/Alat | Opis | Verzija |
---|---|---|
Node.js | JS runtime okruženje, JS na serveru | 12.17 |
Vue.js | Frontend JS framework, za izradu veb aplikacija | 2.6.11 |
VueRouter | Dodatak za Vue.js, za izradu Single Page Application-a (SPA) | 3.6.1 |
Vuetify | UI biblioteka za Vue, bazirana na Material Design-u kompanije Google | 2.2.11 |
MDI | Material Design Icons, ikonice | |
NPM | Menadžer paketa za Node.js, za instaliranje biblioteka (dependency-a) | |
MongoDB | No-SQL (nerelaciona) baza podataka, brze real-time performanse | |
Mongoose | Wrapper za MongoDB pisan za Node.js, modeliranje baze podataka | 5.9.2 |
Express | Minimalan framework za Node.js, za pravljenje API-a | 4.17.1 |
JsonWebToken | Enkripcija podataka o korisnicima, za autentikaciju korisnika | 8.5.1 |
Bcrypt.js | Biblioteka za heširanje lozinki (ne čuvaju se u plain-text formatu) | 2.4.3 |
Dotenv | Biblioteka koja omogućava korišćenje environment varijabli putem .env fajla (tajne promenljive koje ne želimo da se nađu na GitHub repo-u nalaze se ovde, poput tajnih klučeva za heširanje lozinki) | 8.2.0 |
Nodemailer | Biblioteka za slanje mejlova, koristi se prilikom zahtevanja promene lozinke, šalje mejl koji sadrži HTML stranicu | 6.4.6 |
Axios | HTTP klijent zasnovan na principu "Promise"-a (async JS), za slanje HTTP zahteva, "naslednik" AJAX-a | 0.19.2 |
Mocha | JS framework za testiranje | 7.1.1 |
Chai | Assertion biblioteka za JS, koristi se za preciznije assert-ovanje uz pomoć Mocha-e | 4.2.0 |
NYC | Code-coverage za testove | 15.0 |
Nodemon | Biblioteka koja automatski restartuje server pri promeni koda, veoma korisno 😊 | 2.0.2 |
Neke verzije predstavljaju minimalnu kompatibilnu, više o verzijama može se videti u package.json fajlu servera i klijenta.
Tehnologija/Alat | Opis |
---|---|
Heroku | Platforma za deploy-ovanje aplikacije, veoma lep besplatan tier, prati promene na Github repozitorijumu i servira index.html stranu iz /client/dist/ foldera |
Github | Platforma za kolaboraciju, remote hostovanje Git repozitorijuma |
Github pages | Besplatno hostovanje open-source static veb sajtova, za hostovanje prototipa |
Github Actions | Continious Integration (CI) "platforma" u okviru Github-a, automatsko testiranje na svakom pull request-u, testovi se nalaze u /test/ folderu, samo podešavanje Github Actions-a se radi u .yaml fajlu, koji se nalazi u /.github/workflows/ folderu |
Trello | Sajt za upravljanje softverskim projektom, korišćenje Kanban principa, olakšana podela posla, svako zna ko šta radi... Mali pogled na našu tablu nalazi se ovde |
Postman | Alat za testiranje API-a, slanje HTTP request-ova |
Visual Studio Code | Najpopularniji code editor trenutno, veoma fleksibilan što se tiče podrške jezika, kao i personalizovanja samog okruženja |
Prettier | Ekstenzija za VSCode, formatira kod prilikom svakog čuvanja |
Vetur | Ekstenzija za VSCode, intellisense za Vue.js, omogućuje Prettier da radi za .vue fajlove |
MS Teams | Alat za kolaboraciju, video i audio sastanke, mogućnost deljenja ekrana... |
Git Bash | Bolji shell program od Windows CMD-a, za korišćenje Git-a |
Prototip iz faze 2 našeg projekta možete videti ovde kao hostovanu verziju, ili u okviru foldera "Dokumentacija" ovog repo-a.
Kloniranjem repo-a komandom
git clone https://github.com/Jogurat/daljinac .
Onda u okviru root foldera, pokretanje komande:
npm i
instalira sve dependecy-e koji se nalaze u package.json fajlu
Dalje, prelazimo u "client" folder i takodje instaliramo dependecy-e komandama:
cd client
npm i
Backend pokrecemo iz root foldera komandom:
npm start
Frontend ispocetka build-ujemo iz "client" foldera komandama:
cd client
npm run watch
(Prva komanda prelazi iz root foldera u "client" folder)