Skip to content

Conversation

@pydanny
Copy link
Member

@pydanny pydanny commented Dec 16, 2025

This is the beginning of the foundational implementation of Air, which follows practices we've explored in Air and on other frameworks. It allows Air developers to more easily take on more significant projects.

For database setup, in the name of simplicity this version will use plain asyncpg+dbmate. However, I'll write it in such a way that we can add support for other async-friendly options like SQLModel and TortoiseORM.

Command: air init

Creates a new Air project

Usage: air init mysite

While other templates can be provided, the default project design is:

├── .github  # Includes basic QA for GitHub 
├── .gitignore
├── app  # Various application logic components
│   └── routes/
├── config.py  # Configuration at the project level
├── db/  # Database schema and migrations
│   └── schema/
│   └── migrations/
├── main.py  # Main entry point for the project
├── public  # CSS, JS, HTML files that are forward facing
├── scripts  # Where to put command-line actions
└── tests  # Source for all tests, should mirror the file design

Pull request type

Please check the type of change your PR introduces:

  • Bugfix
  • New feature
    • Core Air (Air Tags, Request/Response cycle, etc)
    • Optional (Authentication, CSRF, etc)
    • Third-Party Integrated (Cookbook documentation on using Air databases or a task manager, etc)
    • Out-of-Scope (Formal integration with databases, external task managers, or commercial services etc - won't be accepted, please create a separate project)
  • Refactoring (no functional changes, no api changes)
  • Chore: Dependency updates, Python version changes, etc.
  • Build related changes
  • Documentation content changes
  • Other (please describe): Architecture change

Pull request tasks

The following have been completed for this task:

  • Code changes
  • Documentation changes for new or changed features
  • Alterations of behavior come with a working implementation in the examples folder
  • Tests on new or altered behaviors

Checklist

  • I have run just test and just qa, ensuring my code changes passes all existing tests
  • I have performed a self-review of my own code
  • I have ensured that there are tests to cover my changes

@pydanny pydanny added Status: Do Not Merge! ❌ feature: core needs-design-discussion Maintainers must discuss the design first. Issue is blocked until that discussion ends! labels Dec 16, 2025
@codecov
Copy link

codecov bot commented Dec 16, 2025

Codecov Report

❌ Patch coverage is 0% with 20 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/air/cli.py 0.00% 12 Missing ⚠️
...air/templates/init/{{cookiecutter.name}}/config.py 0.00% 4 Missing ⚠️
...c/air/templates/init/{{cookiecutter.name}}/main.py 0.00% 4 Missing ⚠️

📢 Thoughts on this report? Let us know!

@pydanny pydanny changed the title WIP: Implement skeleton on scaffoling system WIP: Implement skeleton on scaffolding system Dec 17, 2025
@pydanny pydanny force-pushed the air-cli-foundations branch 4 times, most recently from 5af0321 to 1de1e11 Compare December 18, 2025 02:09
@pydanny pydanny force-pushed the air-cli-foundations branch from 8447a21 to 8e61c0d Compare December 20, 2025 11:52
@pydanny pydanny changed the title WIP: Implement skeleton on scaffolding system FEAT: Basic project scaffolding Dec 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature: core needs-design-discussion Maintainers must discuss the design first. Issue is blocked until that discussion ends! Status: Do Not Merge! ❌

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants