Skip to content

Repository files navigation

🌟 Devfolio – Dynamic Portfolio Builder

License: MIT Stack: Next.js Β· MongoDB Atlas Β· Tailwind CSS Β· JWT Β· Image Upload API


🧠 The Problem

Developers and freelancers need personal portfolios that are easy to maintain, customizable, and up-to-dateβ€”without editing code every time they gain experience or build something new.

Yet, most portfolio solutions are:

  • πŸ”’ Static (hardcoded content)
  • 😫 Inflexible (require code changes)
  • ❌ Non-collaborative (no real-time data handling or UI updates)

βœ… Our Solution

Devfolio is a dynamic, self-hosted portfolio builder that empowers developers to:

  • ⚑ Log in securely
  • πŸ› οΈ Add/update/delete their work with ease
  • πŸ–ΌοΈ Upload images of their projects and contributions
  • πŸ’‘ Preview changes live with a beautiful interface
  • 🌘 Toggle dark/light themes intuitively

Perfect for showcasing technical experience, side projects, and employment historyβ€”without touching the codebase.


🎯 Who It’s For

User Type Use Case
Developers Maintain a living portfolio that grows with them
Bootcamp Graduates Easily document new skills and projects
Freelancers Showcase completed work dynamically
Agencies Enable dev clients to manage their own content

🧰 Tech Stack

Layer Tech Stack Purpose
Frontend Next.js + Tailwind CSS SEO-ready, responsive UI
Database MongoDB Atlas Store user, project, experience
Auth JWT (custom or NextAuth) Secure login and user sessions
Uploads Image Upload API Project/work image support
Hosting Vercel / Netlify CI/CD for production deployment

βš™οΈ Core Features

Feature Description
πŸ‘€ User Auth Sign up/log in with JWT & secure session management
πŸ“¦ CRUD System Create, update, and delete Projects & Experience entries
πŸ–ΌοΈ Image Upload Upload and display project images in real time
πŸŒ— Dark Mode Theme toggle saved to user preference
πŸ” Live Preview Edits are rendered instantly on portfolio pages

πŸ–ΌοΈ Screenshots

Auth & Dashboard Project Editor Responsive UI
img1 img2 img3
img4 img5 img6
img7 img8

πŸ› οΈ Installation & Setup

1. Clone the Repository

git clone https://github.com/tochi2055/devfolio.git
cd devfolio

2. Install Dependencies

npm install
# or
yarn install

3. Configure .env.local

Create the following file:

MONGODB_URI=your-mongodb-atlas-connection-string
JWT_SECRET=your_jwt_secret_key
IMAGE_UPLOAD_URL=https://your-image-upload-api.com/upload
NEXT_PUBLIC_BASE_URL=http://localhost:3000

4. Set Up MongoDB Atlas

  • Create a new cluster and database
  • Add a "portfolios" collection (or dynamic per user)
  • Get the connection string and plug it into MONGODB_URI

5. Image Upload Setup

If you're using:

  • Cloudinary / S3 / Uploadthing β€” update IMAGE_UPLOAD_URL to your handler
  • Ensure your frontend uses FormData and the API returns a URL string

6. Start the Dev Server

npm run dev
# or
yarn dev

Browse to: http://localhost:3000

7. Build for Production

npm run build
npm start

πŸ“¦ Deployment Guide

Recommended platforms:

  • Vercel:

    1. Connect GitHub repo
    2. Add .env.local variables
    3. Deploy β†’ Done βœ…
  • Netlify:

    1. Set npm run build && npm start as build command
    2. Add environment variables
    3. Deploy and monitor

πŸ§ͺ Testing (Optional)

If you’ve added tests:

npm test
# or
yarn test

Test auth logic, dashboard CRUD, and form validation.


πŸ—‚οΈ Usage Preview

Action Behavior
πŸ“ Add Project Form with title, desc, image upload
🧠 Edit Experience Auto-fills existing data
❌ Delete Entry One-click removal with confirmation
🎨 Dark Mode Toggle & saved in user preference
⚑ Live Preview Updates reflect instantly

πŸ™Œ Contributing

Want to improve Devfolio?

  1. Fork the repository
  2. Create a branch: git checkout -b feat/my-feature
  3. Commit changes with clear messages
  4. Push: git push origin feat/my-feature
  5. Open a pull request

πŸ’‘ Don’t forget to:

  • Format with ESLint/Prettier
  • Add test coverage where relevant
  • Keep commit messages descriptive

πŸ“„ License

This project is licensed under the MIT License.


πŸ’¬ FAQ

Q: Can I use another image service? A: Yes β€” replace IMAGE_UPLOAD_URL and update your upload logic accordingly.

Q: How can I add social links? A: Extend the user schema in the database and update dashboard + frontend.

Q: Can I make it multi-user? A: Yes β€” current setup is per-user. You can scale it for multi-tenant support with role-based access.

About

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages