A community-driven platform for developers to discover, share, and save free developer tools and resources.
DevFreebies solves the problem of losing valuable developer tools in endless bookmarks, tabs, or notes. It provides a centralized platform where developers can:
- Discover free developer tools
- Save tools to personal collections
- Submit new resources
- Upvote useful resources
- Build a personal library of tools
DevFreebies/
โโโ DevFreebies-backend/ # Node.js + Express API
โ โโโ src/
โ โ โโโ config/ # Configuration files
โ โ โโโ controllers/ # Route controllers
โ โ โโโ middleware/ # Authentication & validation
โ โ โโโ models/ # MongoDB schemas
โ โ โโโ routes/ # API routes
โ โ โโโ utils/ # Helper functions
โ โ โโโ app.js # Express app setup
โ โ โโโ server.js # Server entry point
โ โโโ .env # Environment variables
โ โโโ package.json
โ โโโ README.md
โโโ DevFreebies-frontend/ # React + Vite + Tailwind
โ โโโ src/
โ โ โโโ assets/ # Static assets
โ โ โโโ components/ # React components
โ โ โ โโโ layout/ # Layout components
โ โ โ โโโ pages/ # Page components
โ โ โ โโโ sections/ # Section components
โ โ โ โโโ ui/ # UI components
โ โ โโโ context/ # React context providers
โ โ โโโ services/ # API service layer
โ โ โโโ App.jsx # Main App component
โ โ โโโ main.jsx # Entry point
โ โโโ public/ # Public assets
โ โโโ .env # Environment variables
โ โโโ package.json
โ โโโ vite.config.js
โโโ .git/ # Git repository
โโโ CODE_OF_CONDUCT.md
โโโ CONTRIBUTING.md
โโโ LICENSE
โโโ README.md (this file)
- Node.js (v18+)
- MongoDB (or MongoDB Atlas)
- Git
- Navigate to backend directory:
cd DevFreebies-backend- Install dependencies:
npm install- Configure environment variables:
cp .env.example .env
# Edit .env with your configuration- Start the development server:
npm run dev- Navigate to frontend directory:
cd DevFreebies-frontend- Install dependencies:
npm install- Configure environment variables:
cp .env.example .env
# Edit .env with your API URL- Start the development server:
npm run devThis repository contains a complete monorepo structure with:
- Main branches:
main(production),dev(development) - Hooks: All standard Git hooks available as samples
- Remotes: Connected to
originremote
The .git/objects/ directory contains all Git objects (commits, trees, blobs) organized by SHA-1 hash prefix. The repository includes:
- 80+ Git objects
- Pack files for efficient storage
- Reference logs for branch tracking
HEAD: Points to current branchindex: Staging areaconfig: Repository configurationpacked-refs: Packed references for efficiency
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB + Mongoose
- Authentication: JWT (JSON Web Tokens)
- Validation: Express Validator
- Environment: Dotenv
- Framework: React.js
- Build Tool: Vite
- Styling: Tailwind CSS
- Routing: React Router
- HTTP Client: Axios
- State Management: React Context API
- User registration and login
- JWT-based authentication
- Protected routes and API endpoints
- Role-based access control (user/admin)
- CRUD operations for developer resources
- Category and tag-based organization
- Featured and verified resource flags
- Upvote system for community validation
- Bookmarking for personal collections
- Responsive design with Tailwind CSS
- Dashboard for personal activity tracking
- Search and filtering capabilities
- Pagination for resource listings
- Real-time feedback on user actions
{
_id: ObjectId,
username: String,
email: String,
passwordHash: String,
avatar: String,
role: String, // 'user' or 'admin'
bookmarks: [ResourceId],
contributionScore: Number
}{
_id: ObjectId,
title: String,
description: String,
url: String,
image: String,
category: String,
tags: [String],
submittedBy: UserId,
upvotes: Number,
visits: Number,
isFeatured: Boolean,
isVerified: Boolean,
createdAt: Date
}POST /api/auth/register- Register new userPOST /api/auth/login- User loginGET /api/auth/me- Get current user
GET /api/resources- List resources (with pagination/filtering)GET /api/resources/:id- Get single resourcePOST /api/resources- Create resource (protected)PUT /api/resources/:id- Update resource (protected)DELETE /api/resources/:id- Delete resource (protected)POST /api/resources/:id/upvote- Upvote resource (protected)
GET /api/users/bookmarks- Get user bookmarks (protected)POST /api/users/bookmark/:id- Bookmark resource (protected)
main: Production-ready codedev: Development branchfeature/*: Feature branchesfix/*: Bug fix branches
We follow conventional commits:
feat:New featuresfix:Bug fixesdocs:Documentation changesstyle:Code style changesrefactor:Code refactoringtest:Test-related changeschore:Maintenance tasks
-
Create feature branch from
dev:git checkout -b feature/your-feature-name dev
-
Make changes and commit:
git add . git commit -m "feat: add new resource submission form"
-
Push to remote:
git push origin feature/your-feature-name
-
Create Pull Request to
devbranch
Please read our CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details.
- All contributors who have helped shape this project
- The open-source community for invaluable tools and libraries
- Developers everywhere for sharing their knowledge and resources
DevFreebies aims to become the go-to platform for developers to:
- Discover high-quality, free tools
- Build a reputation through contributions
- Create personal tool collections
- Connect with other developers through shared interests
Planned features include:
- Advanced search with filtering
- User profiles and leaderboards
- Collections and custom lists
- API for third-party integrations
- Browser extensions for quick saving
- Weekly newsletter with top resources
For support, questions, or feedback:
- Check the FAQ
- Review existing issues
- Submit a new issue with details
Happy coding! ๐ปโจ