A portfolio builder that allows users to register, upload projects, showcase skills, track profile views, and receive updates via newsletters.
- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose ODM)
- Authentication: JWT, bcrypt
- File Uploads: Cloudinary, multer
- Email Service: Nodemailer
- API Docs: Swagger (Live Docs)
- Testing: Jest
- Notifications: Web socket
- 🔐 User registration & login (JWT-based)
- 👤 Editable user profiles
- 💾 Project uploads (with Cloudinary integration)
- 📊 Profile view tracking
- 🔍 Project filtering by category (frontend, backend, all)
- 🔎 Search functionality
- 📬 Newsletter subscription
- 📘 Live Swagger API docs
To get started, follow these steps:
-
Clone the repository:
git clone https://github.com/4ssh1/Jodna-portfolio-project-backend.git cd Jodna-portfolio-project-backend -
Install dependencies:
npm install
-
Set Up Environment Variables: Create a .env file in the root directory and add the necessary environment variables
-
Start the server:
npm start
├── backend/
app.js
config
├── cloudinaryConfig.js
controllers
├── authController.js
├── engagementController.js
├── projectController.js
├── userController.js
middlewares
├── protect.js
├── rateLimiter.js
├── token.js
models
├── engagementModel.js
├── projectModel.js
├── subscriberModel.js
├── userModel.js
package-lock.json
package.json
README.md
routes
├── profileRoute.js
├── projectRoute.js
├── userRoute.js
swagger
├── swagger.js
tests
├── authTest.js
├── profileTest.js
├── projectTest.js
utils
├── cloudinary.js
├── emailService.js
├── helpers
│ ├── serverErrorHandler.js
├── multer.js
This project was developed during a 4-week sprint. Check the project plan document for weekly goals and assignments.
We welcome contributions to the Portfolio Project! Whether it's fixing a bug, adding a feature, improving documentation, or suggesting ideas, your contributions are highly appreciated.
-
Fork the Repository:
- Click the "Fork" button on the top right of this repository to create your own copy.
-
Clone the Forked Repository:
- Clone your fork to your local machine:
git clone https://github.com/<your-username>/Jodna-portfolio-project-backend.git cd Jodna-portfolio-project-backend
- Clone your fork to your local machine:
-
Create a New Branch:
- Create a branch for your feature or bug fix:
git checkout -b feature/your-feature-name
- Create a branch for your feature or bug fix:
-
Make Changes:
- Make your changes in the codebase. Ensure your changes follow the project's coding standards.
-
Test Your Changes:
- If applicable, write tests for your changes and run them to ensure everything works:
npm test
- If applicable, write tests for your changes and run them to ensure everything works:
-
Commit Your Changes:
- Write a clear and concise commit message:
git add . git commit -m "Add: Your descriptive commit message"
- Write a clear and concise commit message:
-
Push to Your Fork:
- Push your changes to your forked repository:
git push origin feature/your-feature-name
- Push your changes to your forked repository:
-
Open a Pull Request (PR):
- Navigate to the original repository and click on "New Pull Request".
- Select your branch and provide a detailed description of your changes.
- Follow the Code of Conduct (if applicable).
- Ensure your code passes all tests before submitting.
- Make sure your branch is up to date with the
mainbranch:git checkout main git pull origin main git merge feature/your-feature-name
MIT License © 2025