With this project, it is aimed to increase energy saving in public schools. It is aimed to read the data and make sense of them by processing them through sensors that transmit air quality, temperature and electricity consumption values to be placed in the classrooms of the schools.
This project has a reader-api to read all datas in the postgres tables and consumer, producer api to get all datas from sensors by using IoT principles and error-logger api to store errors that are catched on consumer api
Project Management: GerritHub, GitHub, JIRA/Atlassian
Server: Node, Express, Redis, PostgreSQL, MongoDB, Kafka
Libraries: kafkajs, pg-promise, mongodb, redis, jsonwebtoken, http-status-codes, bcrypt
📦
├─ .gitignore
├─ README.md
└─ apis
├─ base-api
│ ├─ .gitignore
│ ├─ app.js
│ ├─ app
│ │ ├─ configs
│ │ │ ├─ bcryptConfig.js
│ │ │ ├─ config.js
│ │ │ ├─ jwtConfig.js
│ │ │ ├─ postgresConfig.js
│ │ │ ├─ redisConfig.js
│ │ │ └─ serverConfig.js
│ │ ├─ controllers
│ │ │ ├─ authController.js
│ │ │ ├─ classController.js
│ │ │ ├─ logAirQualityController.js
│ │ │ ├─ logElectricConsumptionController.js
│ │ │ ├─ logTemperatureController.js
│ │ │ ├─ schoolController.js
│ │ │ ├─ sensorController.js
│ │ │ └─ userController.js
│ │ ├─ dals
│ │ │ ├─ classDal.js
│ │ │ ├─ dalConstants.js
│ │ │ ├─ logAirQualityDal.js
│ │ │ ├─ logElectricConsumptionDal.js
│ │ │ ├─ logTemperatureDal.js
│ │ │ ├─ schoolDal.js
│ │ │ ├─ sensorDal.js
│ │ │ ├─ tokenDal.js
│ │ │ └─ userDal.js
│ │ ├─ db
│ │ │ ├─ db.js
│ │ │ ├─ postgres.js
│ │ │ └─ redis.js
│ │ ├─ domains
│ │ │ ├─ dtos
│ │ │ │ ├─ ClassDto.js
│ │ │ │ ├─ SchoolDto.js
│ │ │ │ └─ UserDto.js
│ │ │ ├─ models
│ │ │ │ ├─ Classes.js
│ │ │ │ ├─ School.js
│ │ │ │ └─ User.js
│ │ │ └─ ros
│ │ │ ├─ TokenRO.js
│ │ │ └─ UserRO.js
│ │ ├─ middleware
│ │ │ └─ authFilter.js
│ │ ├─ routers
│ │ │ ├─ authRoutes.js
│ │ │ ├─ classRoutes.js
│ │ │ ├─ constants.js
│ │ │ ├─ logAirQualityRoutes.js
│ │ │ ├─ logElectricConsumptionRoutes.js
│ │ │ ├─ logTemperatureRoutes.js
│ │ │ ├─ routes.js
│ │ │ ├─ schoolRoutes.js
│ │ │ ├─ sensorRoutes.js
│ │ │ └─ userRoutes.js
│ │ ├─ services
│ │ │ ├─ authService.js
│ │ │ ├─ bcryptService.js
│ │ │ ├─ classService.js
│ │ │ ├─ logAirQualityService.js
│ │ │ ├─ logElectricConsumptionService.js
│ │ │ ├─ logTemperatureService.js
│ │ │ ├─ schoolService.js
│ │ │ ├─ sensorService.js
│ │ │ └─ userService.js
│ │ └─ utils
│ │ └─ modelMapper.js
│ └─ package.json
├─ consumer-api
│ ├─ app.js
│ ├─ configs
│ │ ├─ config.js
│ │ ├─ mongoDbConfig.js
│ │ ├─ postgresConfig.js
│ │ └─ serverConfig.js
│ ├─ db
│ │ ├─ db.js
│ │ ├─ mongoDb.js
│ │ └─ postgres.js
│ ├─ kafka
│ │ ├─ consumer.js
│ │ └─ kafka.js
│ ├─ package-lock.json
│ └─ package.json
├─ logger-api
│ ├─ app
│ │ ├─ configs
│ │ │ ├─ config.js
│ │ │ ├─ default.yaml
│ │ │ ├─ mongoDbConfig.js
│ │ │ └─ serverConfig.js
│ │ ├─ controller
│ │ │ └─ mongoController.js
│ │ ├─ db
│ │ │ ├─ db.js
│ │ │ └─ mongoDb.js
│ │ ├─ routes
│ │ │ └─ route.js
│ │ └─ swagger
│ │ └─ swagger.yaml
│ ├─ index.js
│ ├─ package-lock.json
│ └─ package.json
└─ producer-api
├─ app.js
├─ controller
│ └─ sensorController.js
├─ kafka
│ ├─ kafka.js
│ └─ producer.js
├─ package-lock.json
└─ package.json
Clone the project
git clone https://github.com/P149-Bootcamp-Graduation-Project/Group4
Go to the each api file
cd api
Install dependencies on each api
npm install
Start the server on each api
npm run start
To run this project, you will need to add the following environment variables to your .env file
APP_PORT=5000
APP_PREFIX="/api/v1"
PG_DB_HOST="88.198.26.82"
PG_DB_PORT=5432
PG_DB_NAME="patika"
PG_DB_USERNAME="group3"
PG_DB_PASSWORD="Password1"
REDIS_HOST=88.198.26.82
REDIS_PORT=6379
REDIS_PASSWORD=dd3j5sKmUHVD6xpG
REDIS_DB_INDEX=3
REDIS_EXPIRATION_TIME=3600
JWT_SECRET=secret
JWT_ACCESS_TOKEN_TIME=30m
JWT_REFRESH_TOKEN_TIME=30d
BCRYPT_ROUND=10
APP_PREFIX=/api/v1
APP_PORT=5001
MONGO_DEFAULT_DB=group4
MONGO_PASS=tDVRDyxJbdjF7k9G
KAFKA_HOST=127.0.0.1
KAFKA_PORT=9092
APP_PORT=3002
KAFKA_HOST=127.0.0.1
KAFKA_PORT=9092
APP_PORT=3003
PG_DB_HOST="88.198.26.82"
PG_DB_PORT=5432
PG_DB_NAME="patika"
PG_DB_USERNAME="group3"
PG_DB_PASSWORD="Password1"
MONGO_DEFAULT_DB=group4
MONGO_PASS=tDVRDyxJbdjF7k9G