Files
cd-browser/README_TEMPLATE.md

398 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Python AI Dev Template
![Python](https://img.shields.io/badge/python-3.11+-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Style](https://img.shields.io/badge/code%20style-black-000000)
![Lint](https://img.shields.io/badge/lint-ruff-red)
![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen)
A universal and adaptable **Python project template** designed for professional development and AIassisted coding workflows (OpenCode, AI agents, etc.).
License: MIT
This repository provides a clean and productionready starting point for building:
- CLI tools
- backend services
- automation scripts
- desktop applications
- internal developer tools
The template enforces **modern Python standards**, **clean architecture**, and **automated quality checks**.
---
# Requirements
- Python **3.11+**
- `pyenv` recommended for Python version management
Check Python version:
```bash
python --version
```
---
# Quick Start
Clone the template repository:
```bash
git clone <template-repository-url> new-project
cd new-project
```
Create a virtual environment:
```bash
python -m venv .venv
source .venv/bin/activate
```
Install development dependencies:
```bash
pip install --upgrade pip
pip install -e '.[dev]'
```
---
# Using the Makefile (Recommended)
This template includes a **Makefile** to simplify common development tasks.
### First time setup
To prepare the full development environment automatically:
```bash
make dev
```
This command will:
- create the `.venv` virtual environment
- install project dependencies
- install development tools
- configure `pre-commit` hooks
This is the **recommended command after cloning the repository**.
### Reinstall or update dependencies
If the virtual environment already exists and you only want to reinstall or update dependencies:
```bash
make install
```
### Development utilities
Some useful commands:
```bash
make fix # autoformat and fix code issues
make quality # run full quality checks
make ci # simulate CI validation
make doctor # show environment and tool versions
make run # run the application
```
Using the Makefile ensures a consistent development workflow across machines.
---
# Environment Configuration
This template supports **environment-based configuration** using a `.env` file.
An example configuration file is provided:
```
.env.example
```
To create your local configuration, copy the example file:
```bash
cp .env.example .env
```
Then edit `.env` and adjust the values for your local environment.
Typical uses include:
- application settings
- API endpoints
- API keys
- database connection strings
- feature flags
⚠️ The `.env` file is **ignored by git** and should **never contain secrets in the repository**.
Only `.env.example` should be committed.
---
# Run the Application
```bash
python -m app.main
```
Expected output:
```
cd-browser is ready.
```
---
# Development Workflow
Before committing changes, always validate the project using the following steps.
### 1. Run the application
```bash
python -m app.main
```
### 2. Run tests
```bash
pytest
```
### 3. Format code
```bash
black src tests
```
### 4. Check formatting
```bash
black --check src tests
```
### 5. Lint code
```bash
ruff check src tests
```
### 6. Type checking
```bash
mypy src
```
If all commands succeed, the project is considered valid.
---
# Quick Quality Check
Run all checks quickly:
```bash
black src tests
ruff check src tests
mypy src
pytest
```
---
# Create a New Repository From This Template
If you downloaded or cloned this template and want to start a **new project repository**, follow these steps.
### 1. Clone the template
```bash
git clone https://gitea.sakydogalo.es/saky/python-ai-dev-template.git new-project
cd new-project
```
### Recommended: Initialize the project automatically
You can initialize a new project using the helper script:
```bash
./scripts/init_project.sh my-project-name
```
This script will:
- reset the git history
- prepare the repository for a fresh start
- keep the template structure intact
After running the script, create your new remote repository and push the code as described below.
---
### Manual initialization (alternative)
If you prefer to perform the steps manually, follow the instructions below.
### 2. Remove the original remote
```bash
git remote remove origin
```
### 3. Reset Git history (start clean)
```bash
rm -rf .git
git init
```
### 4. Update project metadata
Update these files to match your new project:
- `pyproject.toml` → project name and description
- `README.md`
- `src/app/config.py` → application name
### 5. Validate the project
```bash
make fix
make quality
```
### 6. Create your new repository
Create a new repository on your Git server (Gitea, GitHub, etc.).
Example:
```
https://gitea.sakydogalo.es/saky/new-project
```
### 7. Connect the new remote
```bash
git remote add origin <your-new-repository-url>
```
### 8. Create the first commit
```bash
git add .
git commit -m "Initial new-project from template"
```
### 9. Push to the new repository
```bash
git branch -M main
git push -u origin main
```
Your new project repository is now ready.
---
# Project Structure
```
new-project/
├── src/
│ └── app/
│ ├── main.py
│ ├── config.py
│ ├── logging_config.py
│ ├── services/
│ ├── domain/
│ ├── infrastructure/
│ └── utils/
├── tests/
│ └── test_smoke.py
├── scripts/
├── pyproject.toml
├── instructions-agent.md
├── README.md
└── .editorconfig
```
---
# Tooling
This template includes modern Python development tools:
| Tool | Purpose |
|-----|--------|
| pytest | testing framework |
| black | automatic code formatting |
| ruff | linting and static analysis |
| mypy | static type checking |
---
# Purpose of this Template
This repository is intentionally **generic and adaptable**.
It can evolve into:
- a CLI tool
- a web API
- a microservice
- a desktop application
- an automation system
The goal is to provide a **clean, maintainable, and AIfriendly Python project foundation**.
---
# AI Agent Support
This repository includes:
instructions-agent.md
This file defines rules and expectations for AI coding agents such as:
- OpenCode
- AI IDE assistants
- autonomous coding agents
Agents should follow those instructions when modifying the project.
---
# License
This project is released under the **MIT License**, one of the most permissive opensource licenses available.
You are free to:
- use this code for personal or commercial projects
- modify it
- distribute it
- include it in proprietary software
No special permission is required.
Copyright (c) 2025 Saky
This template was created by **Saky**, drawing on many years of professional software engineering experience and with the assistance of modern AI development tools.
The goal of this repository is to provide a practical, productionready starting point for Python projects while remaining as open and reusable as possible.