diff --git a/.env b/.env index 4c0fd4e..909dbfd 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ -JWT_SECRET=supersekretnyklucz123 \ No newline at end of file +JWT_SECRET=supersekretnyklucz123 +MONGODB_CREDENTIALS=mongodb://root:example@host.docker.internal:27017/mizuki?authSource=admin \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 8ae2683..b7d9048 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,10 +2,8 @@ FROM node:20 WORKDIR /app -COPY package*.json ./ -RUN npm install - COPY . . +RUN npm install EXPOSE 3000 diff --git a/README.md b/README.md new file mode 100644 index 0000000..c7add3f --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +## Projekt zaliczeniowy z laboratorium "Szkielety Programistyczne w Aplikacjach Internetowych" + +## Tematyka projektu: Aplikacja do przechowywania plików (File storage app) + +## Autor: Kacper Staroń + +## Funkcjonalności: +- uwierzytelnianie +- rejestracja +- dodawanie plików +- usuwanie plików, zmiana ich nazwy +- zmiana danych logowania + +## Narzędzia i technologie: +- strona serwera: Node.js + Express (web server) + Joi (walidacja) + Multer (middleware do obsługi uploadowania plików) +- baza danych: MongoDB + Mongoose (silnik bazy danych) +- strona klienta: Vite, Vue3, PrimeVue (komponenty) +- konteneryzacja: Docker + +## Wymagania + +Wersje programów wykorzystane do tworzenia aplikacji (aplikacja nie została przetestowana z kompatybilnością wcześniejszych wersji): +- MongoDB 6.0 +- Node.JS 20 +- Docker 28.2.2 + +## Uruchomienie +1. W folderze aplikacji należy uruchomić polecenie `docker compose up` aby zbudować i uruchomić kontenery aplikacji. +2. Należy uruchomić `http://localhost:5173/`. \ No newline at end of file diff --git a/db/db.js b/db/db.js index d908a5a..94eb262 100644 --- a/db/db.js +++ b/db/db.js @@ -2,11 +2,11 @@ const mongoose = require('mongoose'); const connectDB = async () => { try { - mongoose.connect('mongodb://root:example@localhost:27017/your-db-name?authSource=admin') + mongoose.connect(process.env.MONGODB_CREDENTIALS); - console.log('✅ MongoDB connected'); + console.log('MongoDB connected'); } catch (err) { - console.error('❌ MongoDB connection error:', err.message); + console.error('MongoDB connection error:', err.message); process.exit(1); } }; diff --git a/docker-compose.yml b/docker-compose.yml index c8333df..8907b01 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,5 +13,26 @@ services: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: example + backend: + image: mizuki/backend + container_name: backend + restart: always + ports: + - "3000:3000" + build: + context: . + dockerfile: Dockerfile + env_file: ".env" + + frontend: + image: mizuki/frontend + container_name: frontend + restart: always + ports: + - "5173:5173" + build: + context: ./frontend/ + dockerfile: Dockerfile + volumes: mongo-data: diff --git a/dtos/login.dto.js b/dtos/login.dto.js deleted file mode 100644 index 4b30f66..0000000 --- a/dtos/login.dto.js +++ /dev/null @@ -1,8 +0,0 @@ -const Joi = require('joi'); - -const loginSchema = Joi.object({ - username: Joi.string().required(), - password: Joi.string().required() -}); - -module.exports = { loginSchema }; diff --git a/dtos/password.dto.js b/dtos/password.dto.js deleted file mode 100644 index 24d4ab6..0000000 --- a/dtos/password.dto.js +++ /dev/null @@ -1,8 +0,0 @@ -const Joi = require('joi'); - -const passwordChangeSchema = Joi.object({ - oldPassword: Joi.string().required(), - newPassword: Joi.string().required() -}); - -module.exports = { passwordChangeSchema }; diff --git a/dtos/user.dto.js b/dtos/user.dto.js deleted file mode 100644 index 33b1faa..0000000 --- a/dtos/user.dto.js +++ /dev/null @@ -1,8 +0,0 @@ -function userInfoDto(user, avatar = null) { - return { - username: user.username, - avatar: avatar || null - }; -} - -module.exports = { userInfoDto }; diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 781f9b2..0779680 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -2,11 +2,9 @@ FROM node:20 WORKDIR /app -COPY package*.json ./ +COPY . . RUN npm install -COPY . . +EXPOSE 5173 -EXPOSE 3000 - -CMD ["node", "index.js"] \ No newline at end of file +CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] \ No newline at end of file diff --git a/index.js b/index.js index ae53056..fed723a 100644 --- a/index.js +++ b/index.js @@ -11,7 +11,7 @@ connectDB(); app.use(express.json()); app.use(cors({ - origin: "http://localhost:5173", + origin: "*", credentials: true, allowedHeaders: ["Content-Type", "Authorization"] })); @@ -20,7 +20,6 @@ app.use('/api/user', require('./controllers/auth.controller')); app.use('/api/file', require('./controllers/file.controller')); app.use('/f', require('./controllers/serve.controller')); -// Start server app.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}`); }); \ No newline at end of file