A comprehensive, free, and open-source API hub providing developers with essential APIs for building applications. Built with Node.js, Express, and modern JavaScript.
- 🔥 RESTful APIs: Clean, consistent REST API endpoints with JSON responses
- 🎯 Advanced Filtering: Filter, sort, paginate, and search across all APIs
- 🛡️ Rate Limiting: Built-in rate limiting to prevent abuse (100 requests per 15 minutes)
- 🌐 CORS Support: Cross-origin resource sharing enabled for web applications
- 📚 Swagger Documentation: Interactive API documentation with examples
- ⚡ Error Handling: Comprehensive error handling and validation
- 🔄 Auto Updates: Daily automated data updates from external APIs
- 📊 Multiple Categories: 6 major API categories covering development, finance, space, and more
- 🎨 Modern UI: Beautiful and responsive API documentation interface
- 🚀 Quick Start
- 📖 API Documentation
- 🛠️ Installation
- ⚙️ Configuration
- 🧪 Testing
- 🤝 Contributing
- 📄 License
- 🙏 Acknowledgments
- 📞 Support
# Clone the repository
git clone https://github.com/imdeepakyadav/deepdevnodes.git
cd deepdevnodes
# Install dependencies
npm install
# Start the development server
npm run dev
# API will be available at http://localhost:3000
# Documentation at http://localhost:3000/docsGet information about countries with advanced filtering options.
Base URL: http://localhost:3000/api/countries
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/countries |
Get all countries |
| GET | /api/countries/:code |
Get country by code |
Query Parameters:
region- Filter by region (Asia, Europe, Africa, Americas, Oceania)currency- Filter by currency code (USD, EUR, GBP, etc.)language- Filter by languagesearch- Search in country namessort- Sort by field (name, population, area)limit- Limit results (default: 10, max: 250)page- Page number for pagination
Example:
curl "http://localhost:3000/api/countries?region=Asia&limit=5"Get geolocation information for IP addresses.
Base URL: http://localhost:3000/api/ip
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/ip/:ip |
Get IP information |
| GET | /api/ip/myip |
Get your own IP information |
Query Parameters:
fields- Select specific fields (comma-separated)
Example:
curl "http://localhost:3000/api/ip/8.8.8.8"Get inspirational quotes with filtering options.
Base URL: http://localhost:3000/api/quotes
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/quotes |
Get all quotes |
| GET | /api/quotes/random |
Get random quote |
| GET | /api/quotes/:id |
Get quote by ID |
Query Parameters:
author- Filter by authorcategory- Filter by categorysearch- Search in quoteslimit- Limit resultspage- Page number
Example:
curl "http://localhost:3000/api/quotes/random"Get programming and general jokes.
Base URL: http://localhost:3000/api/jokes
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/jokes |
Get all jokes |
| GET | /api/jokes/random |
Get random joke |
| GET | /api/jokes/:id |
Get joke by ID |
Query Parameters:
category- Filter by category (programming, general, etc.)search- Search in jokeslimit- Limit resultspage- Page number
Example:
curl "http://localhost:3000/api/jokes?category=programming"Various utility functions for developers.
Base URL: http://localhost:3000/api/utilities
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/utilities/uuid |
Generate UUID |
| GET | /api/utilities/lorem |
Generate lorem ipsum text |
| GET | /api/utilities/random |
Generate random number |
| GET | /api/utilities/qr |
Generate QR code |
| GET | /api/utilities/barcode |
Generate barcode |
Query Parameters for random:
min- Minimum value (default: 1)max- Maximum value (default: 100)
Query Parameters for lorem:
words- Number of words (default: 50)paragraphs- Number of paragraphs (default: 1)
Example:
curl "http://localhost:3000/api/utilities/uuid"
curl "http://localhost:3000/api/utilities/qr?text=https://github.com/imdeepakyadav/deepdevnodes"Get current time information for different countries.
Base URL: http://localhost:3000/api/time
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/time/:country |
Get time for country |
| GET | /api/time/list |
List supported countries |
Example:
curl "http://localhost:3000/api/time/US"Currency conversion with real-time rates.
Base URL: http://localhost:3000/api/currency
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/currency/convert |
Convert currency |
| GET | /api/currency/rates |
Get exchange rates |
Query Parameters for convert:
from- Source currency (required)to- Target currency (required)amount- Amount to convert (required)
Example:
curl "http://localhost:3000/api/currency/convert?from=USD&to=EUR&amount=100"Get interesting facts across various categories.
Base URL: http://localhost:3000/api/facts
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/facts/random |
Get random fact |
| GET | /api/facts |
Get all facts |
| GET | /api/facts/:id |
Get fact by ID |
Query Parameters:
category- Filter by categorylimit- Limit resultspage- Page number
Example:
curl "http://localhost:3000/api/facts/random"Base URL: http://localhost:3000/api/fun
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/fun/random-user |
Generate random user profile |
Query Parameters:
count- Number of users (default: 1, max: 10)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/fun/memes/templates |
Get available meme templates |
| GET | /api/fun/memes/generate |
Generate meme |
Query Parameters for generate:
template- Template name (required)topText- Top text for memebottomText- Bottom text for meme
Example:
curl "http://localhost:3000/api/fun/random-user"
curl "http://localhost:3000/api/fun/memes/generate?template=drake&topText=Coding&bottomText=Debugging"Base URL: http://localhost:3000/api
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/crypto |
Get cryptocurrency data |
| GET | /api/crypto/:symbol |
Get specific cryptocurrency |
Query Parameters:
limit- Limit results (default: 10)sort- Sort by field (price, market_cap, change)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/stocks |
Get stock data |
| GET | /api/stocks/:symbol |
Get specific stock |
Query Parameters:
limit- Limit results (default: 10)sort- Sort by field (price, change)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/currency/convert |
Convert between currencies |
Example:
curl "http://localhost:3000/api/crypto?limit=5"
curl "http://localhost:3000/api/stocks?limit=5"Base URL: http://localhost:3000/api/space
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/space/launches |
Get space launches |
| GET | /api/space/launches/upcoming |
Get upcoming launches |
Query Parameters:
limit- Limit results (default: 10)status- Filter by status (upcoming, past)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/space/apod |
Get current APOD |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/space/planets |
Get planets data |
| GET | /api/space/planets/:name |
Get specific planet |
Example:
curl "http://localhost:3000/api/space/launches/upcoming"
curl "http://localhost:3000/api/space/apod"Base URL: http://localhost:3000/api/developer
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/developer/github-trending |
Get trending GitHub repositories |
Query Parameters:
language- Filter by programming languagelimit- Limit results (default: 10)sort- Sort by (stars, forks, starsToday)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/developer/npm-trending |
Get trending npm packages |
Query Parameters:
limit- Limit results (default: 10)sort- Sort by (downloads, stars, downloadsChange)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/developer/stackoverflow-trending |
Get trending StackOverflow questions |
Query Parameters:
tag- Filter by taglimit- Limit results (default: 10)sort- Sort by (score, views, answers, newest)answered- Filter by answered status
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/developer/stats |
Get developer ecosystem statistics |
Example:
curl "http://localhost:3000/api/developer/github-trending?language=javascript"
curl "http://localhost:3000/api/developer/npm-trending?limit=5"- Node.js 18+ (Download here)
- npm or yarn package manager
- Git (Download here)
-
Clone the repository:
git clone https://github.com/imdeepakyadav/deepdevnodes.git cd deepdevnodes -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env # Edit .env file with your configuration -
Start the development server:
npm run dev
-
Or start the production server:
npm start
The API will be available at http://localhost:3000
Create a .env file in the root directory with the following variables:
# Server Configuration
PORT=3000
NODE_ENV=development
# API Keys (Optional - for enhanced data updates)
ALPHA_VANTAGE_API_KEY=your_alpha_vantage_api_key_here
GITHUB_TOKEN=your_github_token_here
NASA_API_KEY=your_nasa_api_key_here- Visit Alpha Vantage
- Sign up for a free API key
- Add to your
.envfile
- Go to GitHub Settings > Tokens
- Generate a new personal access token
- Select
public_reposcope - Add to your
.envfile
- Visit NASA API Portal
- Generate an API key
- Add to your
.envfile
Run the comprehensive test suite:
# Run all tests
npm test
# Run API endpoint tests
node test-api.js- Start the server:
npm run dev - Visit the interactive documentation:
http://localhost:3000/docs - Test endpoints using the Swagger UI or curl commands
Update all data sources manually:
npm run update-dataWe welcome contributions from the community! Here's how you can help:
- 🐛 Report Bugs: Use GitHub Issues
- 💡 Suggest Features: Share your ideas for new APIs or improvements
- 🔧 Fix Issues: Help resolve existing bugs
- 📖 Improve Documentation: Enhance docs, add examples, fix typos
- 🧪 Add Tests: Create test cases for better reliability
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/yourusername/deepdevnodes.git cd deepdevnodes -
Create a feature branch:
git checkout -b feature/your-feature-name
-
Install dependencies:
npm install
-
Make your changes and test thoroughly
-
Run tests:
node test-api.js
-
Commit your changes:
git add . git commit -m "Add: Brief description of your changes"
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on the main repository
- Use ES6+ features and modern JavaScript
- Follow consistent naming conventions
- Add JSDoc comments for functions
- Keep code modular and well-organized
- Test your changes before submitting
When adding new API endpoints:
- Create the data file in
src/data/ - Add the controller in
src/controllers/ - Create the route file in
src/routes/ - Register the route in
src/app.js - Update the Swagger documentation
- Add tests for the new endpoint
- Update this README.md
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2024 Deepak Yadav
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
deepdevnodes API wouldn't be possible without these amazing resources and communities:
-
Data Sources:
- REST Countries - Country data
- CoinGecko - Cryptocurrency data
- SpaceX API - Space launch data
- NASA APOD - Astronomy pictures
- GitHub API - Repository data
- npm Registry - Package data
- Stack Exchange API - Q&A data
-
Libraries & Tools:
- Express.js - Web framework
- Node.js - Runtime environment
- Swagger - API documentation
- Axios - HTTP client
-
Community:
- Open source contributors and maintainers
- Developer communities and forums
- Educational content creators
- 📧 Email: imdeepakyadav@example.com
- 💬 GitHub Issues: Create an issue
- 💭 GitHub Discussions: Start a discussion
- 📖 Documentation: API Docs
- 🌟 Star this repo if you find it useful!
- 🍴 Fork and contribute to make it better
- 📢 Share with fellow developers
- 🐛 Report bugs to help improve stability
- Add GraphQL support
- Implement API versioning
- Add webhook notifications
- Create SDKs for popular languages
- Add real-time data streaming
- Implement advanced caching strategies
- Add API analytics and monitoring
- Create mobile app companion