feat: finish

This commit is contained in:
purifetchi 2025-06-17 20:06:49 +02:00
parent a458a8a103
commit ba3c4e2657
10 changed files with 60 additions and 38 deletions

3
.env
View file

@ -1 +1,2 @@
JWT_SECRET=supersekretnyklucz123
JWT_SECRET=supersekretnyklucz123
MONGODB_CREDENTIALS=mongodb://root:example@host.docker.internal:27017/mizuki?authSource=admin

View file

@ -2,10 +2,8 @@ FROM node:20
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm install
EXPOSE 3000

29
README.md Normal file
View file

@ -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/`.

View file

@ -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);
}
};

View file

@ -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:

View file

@ -1,8 +0,0 @@
const Joi = require('joi');
const loginSchema = Joi.object({
username: Joi.string().required(),
password: Joi.string().required()
});
module.exports = { loginSchema };

View file

@ -1,8 +0,0 @@
const Joi = require('joi');
const passwordChangeSchema = Joi.object({
oldPassword: Joi.string().required(),
newPassword: Joi.string().required()
});
module.exports = { passwordChangeSchema };

View file

@ -1,8 +0,0 @@
function userInfoDto(user, avatar = null) {
return {
username: user.username,
avatar: avatar || null
};
}
module.exports = { userInfoDto };

View file

@ -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"]
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]

View file

@ -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}`);
});