Skip to content

Glimor/glim-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Glim API Banner

Overview

Glim API is a powerful and flexible dynamic API generator designed to simplify the creation of RESTful APIs with FastAPI. With built-in authentication, rate limiting, and localization, Glim API provides a robust framework tailored to meet diverse needs. Configure everything easily with a config.toml file, making setup quick and painless.

Note: Glim API is currently under active development. You might encounter some bugs or incomplete features. We appreciate your feedback and contributions to help improve the project!

🚀 Features

  • Dynamic API Generation: Effortlessly generate CRUD APIs based on your custom models.

  • 🔐 JWT Authentication: Secure your API endpoints with JSON Web Token (JWT) authentication.

  • ⚡ Rate Limiting: Manage and control API usage with configurable rate limiting options.

  • 🌍 Localization: Support for multiple languages and currencies, making your API globally accessible.

  • 💾 Flexible Database Integration: Seamless integration with MongoDB or a simple local database.

🛠 Installation

To install Glim API, run the following command:

pip install glimapi

⚙️ Configuration

Once installed, you can generate a config.toml file by running the following command:

glimapi-generate-toml

This command will create a config.toml file in your project directory which holds all the configuration settings for Glim API, allowing for extensive customization.

Additionally, the command will also generate a middlewares directory in your project root. You can add your custom middleware files to this directory to extend or modify the functionality of Glim API.

Customizing config.toml

  • Database Settings: Choose between MongoDB or a local database; set up connection details accordingly.

  • Server Settings: Define the host and port settings for FastAPI.

  • JWT Authentication: Configure JWT parameters, including secret keys and token expiration.

  • Caching: Enable Redis caching and specify connection details.

  • Rate Limiting: Set limits on the number of requests allowed per minute.

  • Models: Define your API models, including fields, filters, and relationships.

💻 Usage

Starting the Glim API

Kickstart your API with a single command:

glimapi-start

Help Command

Need assistance? Access the help command:

glimapi-help

Generate Configuration File

Regenerate or create the config.toml file with:

glimapi-generate-toml

🛠️ Future Enhancements and Roadmap

We have exciting features planned for the future! Here’s what we’re working on:

  • Automated Docker Setup: Simplify deployment with an out-of-the-box Docker configuration.

  • GraphQL Support: Add support for GraphQL endpoints in addition to REST.

  • Enhanced Logging: Implement a more robust logging system for better debugging and monitoring.

  • OAuth2 Authentication: Integrate OAuth2 as an alternative authentication method.

  • Automated Tests: Create a comprehensive test suite to ensure reliability and stability.

  • WebSocket Support: Enable real-time communication with WebSocket integration.

  • Multi-Database Support: Add support for additional databases like PostgreSQL and MySQL.

  • API Versioning: Introduce API versioning to manage breaking changes.

  • Improved Documentation: Expand the documentation with detailed examples and use cases.

  • Localization Enhancements: Extend localization support to include more languages and regions.

  • Automated Diagram Generation: Automatically generate architecture and entity-relationship diagrams based on the API models and configurations.

  • Swagger Integration: Provide automatic API documentation using Swagger UI, making it easy to explore and test API endpoints.

  • Custom View Integration: Allow users to manually add custom views to extend the functionality of the API.

📜 License

This project is licensed under the CC BY-NC-SA 4.0 License.

  • 🛑 NonCommercial: You may not use this project for commercial purposes.

  • 🚫 No Derivatives: You may not modify, distribute, or sublicense the code without permission.

  • 🎓 Personal and Educational Use: The project is intended for personal and educational use only.

For more details, please refer to the LICENSE file.