Skip to content

A portfolio builder that allows users to register, upload projects, showcase skills, track profile views, and receive updates via newsletters.

Notifications You must be signed in to change notification settings

4ssh1/Portfolio-builder

Repository files navigation

🧑‍💻 Portfolio Builder Web App

Build License Tech

A portfolio builder that allows users to register, upload projects, showcase skills, track profile views, and receive updates via newsletters.


🚀 Tech Stack

  • 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

📦 Features

  • 🔐 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

Installation

To get started, follow these steps:

  1. Clone the repository:

      git clone https://github.com/4ssh1/Jodna-portfolio-project-backend.git
      cd Jodna-portfolio-project-backend
  2. Install dependencies:

      npm install
  3. Set Up Environment Variables: Create a .env file in the root directory and add the necessary environment variables

  4. Start the server:

      npm start

📁 Project Structure

├── 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

📅 Timeline

This project was developed during a 4-week sprint. Check the project plan document for weekly goals and assignments.


🤝 Contributing

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.

🛠 How to Contribute

  1. Fork the Repository:

    • Click the "Fork" button on the top right of this repository to create your own copy.
  2. 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
  3. Create a New Branch:

    • Create a branch for your feature or bug fix:
      git checkout -b feature/your-feature-name
  4. Make Changes:

    • Make your changes in the codebase. Ensure your changes follow the project's coding standards.
  5. Test Your Changes:

    • If applicable, write tests for your changes and run them to ensure everything works:
      npm test
  6. Commit Your Changes:

    • Write a clear and concise commit message:
      git add .
      git commit -m "Add: Your descriptive commit message"
  7. Push to Your Fork:

    • Push your changes to your forked repository:
      git push origin feature/your-feature-name
  8. 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.

🛡 Guidelines

  • 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 main branch:
    git checkout main
    git pull origin main
    git merge feature/your-feature-name
    

📄 License

MIT License © 2025


About

A portfolio builder that allows users to register, upload projects, showcase skills, track profile views, and receive updates via newsletters.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published