A modern, community-driven platform that brings together documentation for developer tools, libraries, and frameworks in one accessible place.
Devdocs is a centralized hub where developers can discover, explore, and share comprehensive documentation for the tools and libraries they use. Instead of juggling multiple documentation websites, Devdocs aggregates everything in a beautiful, searchable interface.
Developers spend countless hours:
- Searching for the right documentation
- Jumping between multiple websites
- Struggling to find quality guides and examples
- Losing track of tools they found useful
Devdocs fixes this by creating a single, collaborative space where developers can find all the documentation they need, curated by the community.
- Browse Applications: Discover hundreds of developer tools and libraries
- Search & Filter: Find exactly what you need with powerful search and category filters
- Upvote & Like: Show appreciation for tools you find most useful
- View Your Profile: Track applications you've upvoted and liked
- Add Documentation: Contribute new tools and write comprehensive guides
- Share Knowledge: Help other developers discover quality resources
- Community-Driven: Built by developers, for developers
- Visiting Devdocs
- Users land on the homepage and browse through featured applications
- They can search for specific tools (e.g., "React", "TypeScript", "Docker")
- Results show all applications matching their query with descriptions and categories
- Exploring an Application
- Click on any application to see full documentation
- View description, getting started guides, key features, and useful links
- Upvote if you found it helpful
- Like if you want to save it for later
- Managing Your Profile
- Your profile shows all applications you've upvoted
- Separately displays all applications you've liked
- Easy access to tools you've marked as favorites
- Contributing
- Share your knowledge by adding new applications
- Write descriptions and guides to help others
- The community votes on your contributions
Frontend (Next.js)
β
API Routes (Node.js)
β
Contentstack (CMS)
β
Database & Media
- Frontend: Next.js with TypeScript for type-safe React components
- Authentication: NextAuth.js (Google OAuth login)
- CMS: Contentstack for managing applications and content
- Styling: Tailwind CSS for responsive, modern UI design
- Database: Contentstack's built-in database
- Hero section with feature highlights
- Displays value propositions
- Links to key sections (browse, contribute, FAQs)
-
Browse Feature:
- Fetches all applications from Contentstack using
getAllApplications() - Displays in a beautiful grid with shimmer effects
- Real-time upvote/like counts
- Fetches all applications from Contentstack using
-
Search & Filter:
- Client-side filtering with search query and categories
- Sorting options (name, recent, popular)
-
Upvote/Like System:
- Users click buttons to upvote or like applications
- API routes (
/api/upvote,/api/like) update the database - State managed locally in component with React hooks
- Full application view with complete documentation
- Changelog section showing updates
- Interactive upvote/like buttons
- Links to official documentation
- Server-fetches user data from Contentstack
- Displays upvoted applications in one section
- Displays liked applications in another section
- Shows stats: total upvotes and likes
- Simple click to revisit any saved application
- Rich text editor for writing guides
- Form fields for app details (title, description, category, tags)
- Submits new applications to Contentstack via API routes
- Contribution approval system
When a User Upvotes an App:
User clicks upvote button
β
Component calls /api/upvote endpoint
β
API route authenticates user (NextAuth)
β
Updates application's upvote count in Contentstack
β
Updates user's upvoted_applications list
β
Returns success response
β
UI updates with new count and button state
When a User Views Their Profile:
Page server-fetches user data from Contentstack
β
Extracts upvoted_applications array
β
Extracts liked_applications array
β
Renders two sections with applications
β
User can click any app to view full details
When a User Contributes:
User fills in contribution form
β
Clicks "Submit" button
β
Form data sent to /api/contribute endpoint
β
API validates and stores in Contentstack
β
Application appears in pending contributions
β
Admin reviews and approves
β
App goes live on the platform
app/
βββ page.tsx # Homepage
βββ applications/
β βββ page.tsx # Browse all applications
β βββ [slug]/
β βββ page.tsx # Application detail
β βββ changelog/ # Version history
βββ profile/
β βββ page.tsx # Profile server component
β βββ ProfileClient.tsx # Profile client component
βββ contribute/
β βββ page.tsx # Contribution form
βββ api/ # API routes
βββ upvote/route.ts # Handle upvotes
βββ like/route.ts # Handle likes
βββ contribute/route.ts # Handle contributions
βββ user/
βββ upvoted/route.ts # Get user's upvotes
βββ liked/route.ts # Get user's likes
lib/
βββ contentstack.ts # Contentstack delivery API
βββ contentstack-management.ts # CMS management API
βββ contentstack-management-queries.ts # Database operations
βββ auth.ts # Authentication config
βββ queries.ts # Database query helpers
components/
βββ ui/ # Reusable UI components
βββ applications/ # Application cards & grids
βββ layout/ # Header, footer
βββ ... # Other components
- Node.js (v18 or higher)
- npm or yarn
- Clone the repository
git clone https://github.com/unboundedraj/Devdocs.git
cd Devdocs- Install dependencies
npm install- Set up environment variables
Create a
.env.localfile in the root with:
NEXT_PUBLIC_CONTENTSTACK_API_KEY=your_api_key
CONTENTSTACK_MANAGEMENT_TOKEN=your_management_token
NEXT_PUBLIC_CONTENTSTACK_ENVIRONMENT=production
GOOGLE_CLIENT_ID=your_google_oauth_id
GOOGLE_CLIENT_SECRET=your_google_oauth_secret
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=your_secret_key- Run the development server
npm run dev- Open your browser Navigate to http://localhost:3000
Example: Adding a "Copy Link" button to applications
- Find the component:
components/applications/ApplicationCard.tsx - Add button in the footer: Near the upvote/like buttons
- Create handler function:
handleCopyLink()in the component - Test: Run the app and verify the button works
Example: Adding a "difficulty_level" field
- Update Contentstack CMS: Add field to "application" content type
- Update TypeScript type:
types/application.ts - Update queries:
lib/contentstack-management-queries.ts - Update UI: Show the field in
ApplicationCard.tsx
Example: Add endpoint to get trending apps
- Create file:
app/api/trending/route.ts - Write handler:
export async function GET() {
// Fetch top upvoted apps
// Return JSON response
}- Call from component:
fetch('/api/trending') - Display results: Show in a component
We welcome contributions from everyone! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Push to the branch
- Open a Pull Request
- Share tools and libraries on our platform
- Write guides to help others
- Update existing documentation
- Use the contribute page to add new entries
- Questions? Open an issue on GitHub
- Found a bug? Report it with steps to reproduce
- Have ideas? We'd love to hear them in discussions
This platform is built by and for the developer community. Every contribution, upvote, and like helps make developer resources more discoverable.
Happy exploring! π