This is the API for Dileepa's personal website (dileepa.dev), built with NestJS. It provides various endpoints to access information about Dileepa and other related data.
- Framework: NestJS
- Language: TypeScript
- Runtime: Node.js
- Package Manager: npm
- Linting: ESLint
- Formatting: Prettier
- Version Control: Git
- Database: MongoDB (using Mongoose)
- Deployment: Vercel (Serverless Functions)
- Authentication: JWT (JSON Web Tokens) with Passport.js
- Authorization: Role-Based Access Control (RBAC) with custom Guards
- Image Hosting: Azure Blob Storage
- Documentation: Swagger (distributed via CDN for serverless compatibility)
-
Clone the repository:
git clone https://github.com/dileepadev/api.dileepa.dev.git cd api.dileepa.dev -
Install dependencies:
npm install
-
Copy the example environment file and update it with your configuration:
cp .env.example .env # Then edit .env as needed
To run the application in development mode with file watching:
npm run start:devThe application will be available at http://localhost:3000 (or the configured port in .env).
To build and run the application in production mode:
npm run build
npm run start:prodImportant
Swagger UI and JSON OpenAPI is disabled in production. It is only available in development mode.
-
Swagger UI is available at
/apionce the app is running. (e.g.,http://localhost:3000/api) -
JSON OpenAPI specification is available at
/api-json. (e.g.,http://localhost:3000/api-json)
To run tests:
npm run testThis project follows a versioning pattern similar to Semantic Versioning (SemVer) for managing releases. For detailed versioning information, see the VERSIONING.md file.
Contributions are welcome! Please read the following before contributing:
- CONTRIBUTING.md
- CODE_OF_CONDUCT.md
- BRANCH_NAMING_GUIDELINES.md
- COMMIT_MESSAGE_GUIDELINES.md
- PULL_REQUEST_GUIDELINES.md
For any issues or feature requests, please use the issue templates provided in the repository. You can also check the CHANGELOG.md for updates and changes.
If you discover any security vulnerabilities, please report them as described in SECURITY.md.
This project is licensed under the terms of the LICENSE file.
The API supports full CRUD operations for authorized users. Public data is accessible via GET requests.
| Endpoint | Description |
|---|---|
/auth |
Authentication endpoints (Login, Refresh, Profile). |
/about |
Provides general profile information about me. |
/experiences |
Returns a list of my professional work experiences. |
/educations |
Displays my academic background, including degrees. |
/events |
Lists upcoming and past events, talks, or appearances. |
/videos |
Links to video content such as talks or tutorials. |
/blogs |
Returns metadata or summaries of blog posts. |
/sync |
Blog synchronization endpoint (API Key required). |
/communities |
Tech communities I've volunteered with. |
/tools |
Lists the tools, frameworks, and technologies I use. |
/mail |
Email support and contact form endpoints. |
/uploads |
Image and asset upload endpoints. |
This project is designed for deployment on Vercel and uses Vercel's serverless functions for API hosting. For deployment instructions, see the official Vercel documentation.
For any inquiries or feedback, please reach out to me via email or through my website.