# Nanda Arch π
> An opinionated backend framework, built on FastAPI and Tortoise ORM, designed to accelerate the development of robust and scalable APIs in Python.
Inspired by the productivity and modular structure of Django, but with all the power and modernity of the asynchronous ecosystem.
---
## β¨ Philosophy
Nanda Arch was created to solve common problems at the beginning of backend projects by providing an organized structure and out-of-the-box tools, allowing you to focus on what truly matters: your application's business logic.
---
## π Key Features
- π **Productive CLI**: Create new projects and apps with the `nanda startproject` and `nanda startapp` commands.
- π¦ **Modular Architecture**: Organize your code into independent "apps," just like in Django.
- β‘ **Fully Asynchronous**: Take full advantage of the performance of FastAPI and Tortoise ORM.
- π **Security Included**: A built-in security template with JWT (token creation and validation) and a role-based permission system ready to use.
- βοΈ **Environment-based Settings**: Configuration management with `python-decouple`, separating code from environment variables (`.env`).
- ποΈ **Database Migrations**: Integrated with Aerich to manage your database schema migrations effortlessly.
---
## π Requirements
- Python 3.13+
- Poetry
---
## π οΈ Framework Installation
To start using Nanda Arch to create your own projects, first install the framework itself:
```bash
# 1. Clone the repository
git clone https://github.com/your-username/nanda-arch.git
# 2. Navigate into the directory
cd nanda_arch-arch
# 3. Install dependencies and the 'nanda_arch' command
poetry install
````
---
## π Quick Start: Creating Your First Project
Let's create a project from scratch in under 5 minutes.
### 1. Create the Project
Use the `nanda` command we just installed:
```bash
nanda_arch startproject my-awesome-project
```
### 2. Set Up the Environment
Navigate into the newly created project folder. You will find a `.env` file ready to be configured.
```bash
cd my-awesome-project
```
Open the `.env` file and set your `JWT_SECRET_KEY`. This is a critical security step. You can generate a strong key with the following command:
```bash
# This command generates a secure key. Copy and paste it into your .env file
openssl rand -hex 32
```
### 3. Install Project Dependencies
Each project generated by Nanda Arch has its own dependencies. Install them:
```bash
poetry install
```
### 4. Create Your First App
Letβs create an app to manage users:
```bash
nanda_arch startapp users
```
### 5. Register the App
Open the `system/settings.py` file and add your new app to the `INSTALLED_APPS` list:
```python
# system/settings.py
INSTALLED_APPS = [
'apps.users.config', # Add this line
]
```
### 6. Prepare the Database
Nanda Arch uses Aerich for migrations.
```bash
aerich init -t <your settings>
# Initializes Aerich, connecting it to Tortoise ORM
aerich init-db
# Creates the first migration file based on your models
aerich migrate --name "initial"
# Applies the migration, creating the tables in the database
aerich upgrade
```
### 7. Run the Server!
Everything is ready! Start the development server:
```bash
uvicorn main:app --reload
```
Open your browser to [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) to see the interactive API documentation!
---
## ποΈ Generated Project Structure
A project created with `nanda startproject` will have the following structure:
```
my-awesome-project/
βββ apps/ # Where your modular apps will live
βββ system/ # The core of your project
β βββ core.py # Main FastAPI instance and app registry
β βββ security.py # Authentication logic, JWT, and permissions
β βββ settings.py # Project settings (apps, database, etc.)
βββ .env # Environment variables (NEVER commit this!)
βββ .gitignore # Files to be ignored by Git
βββ main.py # Entrypoint for the Uvicorn server
βββ pyproject.toml # Project dependencies and settings
βββ README.md # Your project's documentation
```
---
## π License
This project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for more details.
---
## β€οΈ A Personal Note
This project is dedicated with all my love to my girlfriend, **Mirelly Fernanda**, in celebration of our first year together. The name "Nanda" is a tribute to her.
β Made with love, Jefferson π»
Raw data
{
"_id": null,
"home_page": "https://github.com/Jefferson5286/nanda-arch.git",
"name": "nanda_arch",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.13",
"maintainer_email": null,
"keywords": "fastapi, framework, tortoise-orm, async, api, rest",
"author": "Jeffers",
"author_email": "jeffersonlima5286@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/a7/65/b2c7d2a671e333e58f77e40e5a9b9e6259bdd5ab3c944e3b3ced625e5b89/nanda_arch-1.0.10.tar.gz",
"platform": null,
"description": "# Nanda Arch \ud83d\ude80\n\n> An opinionated backend framework, built on FastAPI and Tortoise ORM, designed to accelerate the development of robust and scalable APIs in Python.\n\nInspired by the productivity and modular structure of Django, but with all the power and modernity of the asynchronous ecosystem.\n\n---\n\n## \u2728 Philosophy\n\nNanda Arch was created to solve common problems at the beginning of backend projects by providing an organized structure and out-of-the-box tools, allowing you to focus on what truly matters: your application's business logic.\n\n---\n\n## \ud83d\udd11 Key Features\n\n- \ud83d\ude80 **Productive CLI**: Create new projects and apps with the `nanda startproject` and `nanda startapp` commands.\n- \ud83d\udce6 **Modular Architecture**: Organize your code into independent \"apps,\" just like in Django.\n- \u26a1 **Fully Asynchronous**: Take full advantage of the performance of FastAPI and Tortoise ORM.\n- \ud83d\udd12 **Security Included**: A built-in security template with JWT (token creation and validation) and a role-based permission system ready to use.\n- \u2699\ufe0f **Environment-based Settings**: Configuration management with `python-decouple`, separating code from environment variables (`.env`).\n- \ud83d\uddc4\ufe0f **Database Migrations**: Integrated with Aerich to manage your database schema migrations effortlessly.\n\n---\n\n## \ud83d\udccb Requirements\n\n- Python 3.13+\n- Poetry\n\n---\n\n## \ud83d\udee0\ufe0f Framework Installation\n\nTo start using Nanda Arch to create your own projects, first install the framework itself:\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/your-username/nanda-arch.git\n\n# 2. Navigate into the directory\ncd nanda_arch-arch\n\n# 3. Install dependencies and the 'nanda_arch' command\npoetry install\n````\n\n---\n\n## \ud83d\ude80 Quick Start: Creating Your First Project\n\nLet's create a project from scratch in under 5 minutes.\n\n### 1. Create the Project\n\nUse the `nanda` command we just installed:\n\n```bash\nnanda_arch startproject my-awesome-project\n```\n\n### 2. Set Up the Environment\n\nNavigate into the newly created project folder. You will find a `.env` file ready to be configured.\n\n```bash\ncd my-awesome-project\n```\n\nOpen the `.env` file and set your `JWT_SECRET_KEY`. This is a critical security step. You can generate a strong key with the following command:\n\n```bash\n# This command generates a secure key. Copy and paste it into your .env file\nopenssl rand -hex 32\n```\n\n### 3. Install Project Dependencies\n\nEach project generated by Nanda Arch has its own dependencies. Install them:\n\n```bash\npoetry install\n```\n\n### 4. Create Your First App\n\nLet\u2019s create an app to manage users:\n\n```bash\nnanda_arch startapp users\n```\n\n### 5. Register the App\n\nOpen the `system/settings.py` file and add your new app to the `INSTALLED_APPS` list:\n\n```python\n# system/settings.py\n\nINSTALLED_APPS = [\n 'apps.users.config', # Add this line\n]\n```\n\n### 6. Prepare the Database\n\nNanda Arch uses Aerich for migrations.\n\n```bash\naerich init -t <your settings>\n\n# Initializes Aerich, connecting it to Tortoise ORM\naerich init-db\n\n# Creates the first migration file based on your models\naerich migrate --name \"initial\"\n\n# Applies the migration, creating the tables in the database\naerich upgrade\n```\n\n### 7. Run the Server!\n\nEverything is ready! Start the development server:\n\n```bash\nuvicorn main:app --reload\n```\n\nOpen your browser to [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs) to see the interactive API documentation!\n\n---\n\n## \ud83c\udfd7\ufe0f Generated Project Structure\n\nA project created with `nanda startproject` will have the following structure:\n\n```\nmy-awesome-project/\n\u251c\u2500\u2500 apps/ # Where your modular apps will live\n\u251c\u2500\u2500 system/ # The core of your project\n\u2502 \u251c\u2500\u2500 core.py # Main FastAPI instance and app registry\n\u2502 \u251c\u2500\u2500 security.py # Authentication logic, JWT, and permissions\n\u2502 \u2514\u2500\u2500 settings.py # Project settings (apps, database, etc.)\n\u251c\u2500\u2500 .env # Environment variables (NEVER commit this!)\n\u251c\u2500\u2500 .gitignore # Files to be ignored by Git\n\u251c\u2500\u2500 main.py # Entrypoint for the Uvicorn server\n\u251c\u2500\u2500 pyproject.toml # Project dependencies and settings\n\u2514\u2500\u2500 README.md # Your project's documentation\n```\n\n---\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the **MIT License**. See the [LICENSE](LICENSE) file for more details.\n\n---\n\n## \u2764\ufe0f A Personal Note\n\nThis project is dedicated with all my love to my girlfriend, **Mirelly Fernanda**, in celebration of our first year together. The name \"Nanda\" is a tribute to her.\n\n\u2014 Made with love, Jefferson \ud83d\udcbb\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An opinionated backend framework, built on FastAPI and Tortoise ORM, for rapid and structured API development.",
"version": "1.0.10",
"project_urls": {
"Homepage": "https://github.com/Jefferson5286/nanda-arch.git",
"Repository": "https://github.com/Jefferson5286/nanda-arch.git"
},
"split_keywords": [
"fastapi",
" framework",
" tortoise-orm",
" async",
" api",
" rest"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bdf47104c0b4f1fd70c4347dd4c211d4856e4337349d0555dec71b75a303e864",
"md5": "45228abee6b787e760009ae2f6fe220f",
"sha256": "690431aa736ad7226fdf60c3c1d1d56c3ab573e5d338e8c17f3974d3dfb99b43"
},
"downloads": -1,
"filename": "nanda_arch-1.0.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "45228abee6b787e760009ae2f6fe220f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.13",
"size": 14330,
"upload_time": "2025-07-11T20:27:13",
"upload_time_iso_8601": "2025-07-11T20:27:13.030942Z",
"url": "https://files.pythonhosted.org/packages/bd/f4/7104c0b4f1fd70c4347dd4c211d4856e4337349d0555dec71b75a303e864/nanda_arch-1.0.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a765b2c7d2a671e333e58f77e40e5a9b9e6259bdd5ab3c944e3b3ced625e5b89",
"md5": "2254283d72c75490e874c5f9be808c28",
"sha256": "0786eb64f6762d8260dc762a7b933d57a5bcf61952ea4e7d42e1a73e47850c82"
},
"downloads": -1,
"filename": "nanda_arch-1.0.10.tar.gz",
"has_sig": false,
"md5_digest": "2254283d72c75490e874c5f9be808c28",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.13",
"size": 12795,
"upload_time": "2025-07-11T20:27:14",
"upload_time_iso_8601": "2025-07-11T20:27:14.358758Z",
"url": "https://files.pythonhosted.org/packages/a7/65/b2c7d2a671e333e58f77e40e5a9b9e6259bdd5ab3c944e3b3ced625e5b89/nanda_arch-1.0.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-11 20:27:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Jefferson5286",
"github_project": "nanda-arch",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "nanda_arch"
}