Skip to content

Commit 57fd857

Browse files
committed
feat: implement Docker setup and update file upload routes
1 parent 280f947 commit 57fd857

File tree

12 files changed

+57
-15
lines changed

12 files changed

+57
-15
lines changed

backend/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
FROM node:18-alpine
2+
3+
WORKDIR /app
4+
5+
COPY package*.json ./
6+
RUN npm install
7+
8+
COPY . .
9+
10+
EXPOSE 5000
11+
12+
CMD ["npm", "start"]

backend/app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import PublicationsRoutes from './src/routes/publication.routes.js';
2525

2626

2727

28-
app.use('/api/files', FileRoutes);
28+
// app.use('/api/files', FileRoutes);
2929
app.use('/api/users', userRoutes);
3030
app.use('/api/cv', cvRoutes);
3131
app.use('/api/conferences', conferenceRoutes);

backend/src/middlewares/s3.upload.middleware.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const uploadDocument = multer({
6262
});
6363
},
6464
}),
65-
limits: { fileSize: 5 * 1024 * 1024 },
65+
limits: { fileSize: 10 * 1024 * 1024 },
6666
fileFilter: (req, file, cb) => {
6767
const allowedTypes = [
6868
'image/jpeg',
@@ -72,9 +72,11 @@ const uploadDocument = multer({
7272
'application/msword',
7373
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
7474
];
75-
76-
if (allowedTypes.includes(file.mimetype)) cb(null, true);
77-
else cb(new Error('Only image or document files are allowed'), false);
75+
if (allowedTypes.includes(file.mimetype)) {
76+
cb(null, true);
77+
} else {
78+
cb(new Error('Only image or document files are allowed'), false);
79+
}
7880
},
7981
});
8082

backend/src/routes/file.routes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { uploadPhoto,uploadDocument } from '../middlewares/s3.upload.middleware.
55

66
const router = Router();
77

8-
router.route('/upload').post(
8+
router.route('/upload-photo').post(
99
verifyJWT,
1010
uploadPhoto.single('document'),
1111
uploadFile
1212
);
13-
router.route('/documents/upload').post(
13+
router.route('/upload-document').post(
1414
verifyJWT,
1515
uploadDocument.single('document'),
1616
uploadFile

backend/src/routes/user.routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ router.route("/current-user").get(verifyJWT, getCurrentUser);
1111
router.post("/accept-hipaa", verifyJWT, acceptHIPAAagreement);
1212
router.get("/hipaa-status", verifyJWT, getHIPAAstatus);
1313
router.post(
14-
"/documents/upload",
14+
"/documents/upload-document",
1515
verifyJWT,
1616
uploadPhoto.single('document'),
1717
uploadFile

docker-compose.yml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
version: "3.9"
2+
3+
services:
4+
backend:
5+
build: ./backend
6+
container_name: backend
7+
ports:
8+
- "5000:5000"
9+
environment:
10+
- NODE_ENV=production
11+
12+
frontend:
13+
build: ./frontend
14+
container_name: frontend
15+
ports:
16+
- "3000:80"
17+
depends_on:
18+
- backend

frontend/Dockerfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM node:18-alpine as build
2+
WORKDIR /app
3+
COPY package*.json ./
4+
RUN npm install
5+
COPY . .
6+
RUN npm run build
7+
8+
FROM nginx:alpine
9+
COPY --from=build /app/dist /usr/share/nginx/html
10+
EXPOSE 80

frontend/src/pages/Dashboard/CVBuilder/steps/BasicDetailsStep.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ const BasicDetailsStep = ({ formData, onInputChange }) => {
102102
const uploadFormData = new FormData();
103103
uploadFormData.append('document', file);
104104

105-
const response = await api.post('/documents/upload', uploadFormData);
105+
const response = await api.post('/documents/upload-document', uploadFormData);
106106

107107
if (response.data.success) {
108108
onInputChange('basicDetails', documentType, response.data.data.url);

frontend/src/pages/Dashboard/CVBuilder/steps/ConferencesStep.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const ConferencesStep = ({ formData, onArrayAdd, onArrayRemove, onArrayUpdate })
3737
const formDataObj = new FormData();
3838
formDataObj.append('document', file);
3939

40-
const response = await api.post('/documents/upload', formDataObj, {
40+
const response = await api.post('/documents/upload-document', formDataObj, {
4141
headers: {
4242
'Content-Type': 'multipart/form-data',
4343
},

frontend/src/pages/Dashboard/CVBuilder/steps/PublicationsStep.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ const PublicationsStep = ({ formData, onArrayAdd, onArrayRemove, onArrayUpdate }
3535
const formDataObj = new FormData();
3636
formDataObj.append('document', file);
3737

38-
const response = await api.post('/documents/upload', formDataObj, {
38+
const response = await api.post('/documents/upload-document', formDataObj, {
3939
headers: {
4040
'Content-Type': 'multipart/form-data',
4141
},
42-
});
43-
42+
})
43+
console.log('Document upload response:', response);
4444
if (response.data.success) {
4545
const documentData = {
4646
url: response.data.data.url,

0 commit comments

Comments
 (0)