Appcraft
1. Getting Started
1.1. What Is Appcraft?
1.2. Why Use It
1.3. Installation
1.4. Starting a New Project
1.5. Adding Templates to an Existing Project
2. Developing Your Project
2.1. Your First Run
2.2. The Mental Model
2.3. Which Folder Does a New Piece Go In?
2.4. Configuration
2.5. Interactive and Non-Interactive Runs
2.6. Checking Your Work
2.7. Glossary
2.7.1. Recipes
2.7.1.1. Add a Model
2.7.1.2. Add the Schemas and Mapper
2.7.1.3. Add a Repository
2.7.1.4. Add a Use Case
2.7.1.5. Add a Presentation Class
2.7.1.6. Add a Runner
2.7.1.7. Store Products in a Database
2.7.1.8. Where to Go Next
3. Templates
3.1. Template Types
3.1.1. Default Templates
3.1.2. Shared-Base Templates
3.1.3. Exclusive Templates
3.1.4. Interchangeable Templates
3.1.5. Composable Extensions
3.1.6. Dependencies
3.1.7. Inactive Templates
3.2. Base Template
3.2.1. A working project out of the box
3.2.2. Resilience and developer experience
3.2.3. Learning the architecture by example
3.2.4. Runners
3.3. Poetry Template
3.3.1. Switching to Poetry
3.4. Pipenv Template
3.4.1. Switching to Pipenv
3.5. uv Template
3.5.1. Switching to uv
3.6. Docker Template
3.6.1. Dynamic, one service per entry point
3.6.2. Building and running
3.6.3. No hardcoded package manager
3.6.4. Development vs. production
3.6.5. One thing to set up yourself
3.7. Prompt Toolkit Template
3.8. SQLAlchemy Template
3.8.1. What it adds
3.8.2. Combining with Flask
3.8.3. Runners
3.8.4. Adding a Table for a New Model
3.9. MongoDB Template
3.9.1. What it adds
3.9.2. Runners
3.10. Flask Template
3.10.1. Automatic routing
3.10.2. Database integration
3.10.3. Development vs. production
3.10.4. Runner
3.11. Flask UI Template
3.11.1. Adding a Page
3.12. Flask API Template
3.12.1. Adding an API Route
3.13. Web Scraping Template
3.13.1. What this template provides
3.13.2. Choosing an engine
3.13.3. Handing off between engines
3.13.4. Available runners
3.13.5. Benchmarking installed engines
3.14. Selenium Template
3.14.1. Browser detection
3.14.2. Cookies and headers
3.14.3. Using Selenium specifically
3.15. Playwright Template
3.15.1. Async by nature
3.15.2. Cookies and headers
3.15.3. Using Playwright specifically
3.16. HTTPX Template
3.16.1. Choosing a parser
3.16.2. Cookies and headers
3.16.3. Using HTTPX specifically
3.17. curl_cffi Template
3.17.1. Why this exists alongside HTTPX
3.17.2. Cookies and headers
3.17.3. Using curl_cffi specifically
3.18. Git Template
3.18.1. What it sets up
3.18.2. Setting up the branching strategy
3.18.3. Branching strategy (
config/git.toml
)
3.18.4. Feature and fix branches
3.18.5. Conventional Commits
3.18.6. Breaking changes
3.18.7. Pausing at the end of a command
3.18.8. Releases
3.18.9. Cutting a major version on purpose
3.18.10. Changelog
3.18.11. Cleaning up merged branches
3.18.12. Remote repository
3.18.13. Limitations
3.19. Remote Repository Template
3.19.1. Commands
3.19.2. Choosing the platform
3.19.3. Adding a platform
3.20. GitHub Template
3.20.1. Requirements
3.20.2. What it does
3.20.3. Example
4. Layered Architecture
4.1. Runner Layer
4.1.1. What to Do in Runners
4.1.2. What to Avoid in Runners
4.1.3. Types of runners
4.1.4. Example of a Runner
4.1.5. Running Applications
4.1.6. Running Tool Runners
4.1.7. Executing a Specific Runner
4.2. Presentation Layer
4.2.1. What belongs here
4.2.2. What to avoid here
4.2.3. Naming convention:
<Domain>CLIPresentation
4.2.4. Example: a CLI Presentation
4.3. Application Layer
4.3.1. What belongs here
4.3.2. What to avoid here
4.3.3. Naming conventions
4.3.4. Example: a Port
4.3.5. Example: a Repository
4.3.6. Example: a Mapper and Schema
4.3.7. Example: a Use Case
4.3.8. Introspection use cases
4.4. Domain Layer
4.4.1. What belongs here
4.4.2. What to avoid here
4.4.3. Naming convention: a pure contract, not
I
+ name
4.4.4. Example: a domain model
4.4.5. Example: a filter
4.5. Infrastructure Layer
4.5.1. What belongs here
4.5.2. What to avoid here
4.5.3. Naming convention:
Adapter
4.5.4. Example: the default database Adapter
4.5.5. Providers
4.6. Application Flow
4.6.1. Request Flow
4.6.2. Response Flow
5. Contributing
5.1. Looking for Something to Build?
5.2. Creating New Templates
5.3. Updating Existing Templates
5.4. Translating the Framework
5.5. Working in a Temporary Project
5.6. Ready to Contribute?
6. Changelog
6.1. 1.0.0b1
6.1.1. Added
6.1.2. Changed
6.1.3. Fixed
6.2. 0.6.0b0
6.2.1. Added
6.2.2. Changed
6.2.3. Fixed
6.2.4. Removed
7. Contact
8. Versions
Appcraft
Index
Index