Compare commits

..

2 Commits

+135
View File
@@ -0,0 +1,135 @@
# Contributing to d0a1 Quickstart
Thanks for your interest in contributing! d0a1 Quickstart is a one-command local AI setup — Ollama + Open WebUI in Docker, no cloud, no API keys. This guide covers how to make changes and submit them.
---
## Repository Layout
```
deploy.sh ← One-command deployment script (bash)
docker-compose.yml ← Docker Compose stack (Ollama + Open WebUI)
.env.example ← Template configuration file
.gitattributes ← LF normalization (prevents CRLF issues on WSL)
.gitignore ← Git ignore rules
README.md ← User-facing documentation (Spanish)
LICENSE ← MIT license
CONTRIBUTING.md ← You are here
```
---
## Development Workflow
### 1. Clone and branch
```bash
git clone https://git.d0a1.es/monyi/quickstart.git
cd quickstart
git checkout -b feat/your-feature
```
### 2. Make changes
The repo is a pure infrastructure project — no build step, no dependencies. Edit `deploy.sh`, `docker-compose.yml`, `.env.example`, or `README.md` directly.
### 3. Test locally
```bash
cp .env.example .env
# Edit .env if you want non-default ports or models
./deploy.sh
```
Verify:
- Both containers start (`docker compose ps`)
- Open WebUI loads at `http://localhost:3000`
- Ollama responds at `http://localhost:11434`
- The default model downloads successfully
- `deploy.sh` exits with code 0
### 4. Commit and push
```bash
git add .
git commit -m "fix: short description of your change"
git push origin feat/your-feature
```
### 5. Create a Pull Request
Use the Gitea web UI or API. Reference any related issues in the PR body (e.g., `closes #2`).
---
## Code Style
### Shell (deploy.sh)
- Use `const`/`let` equivalents — no mutable global state without good reason
- `set -euo pipefail` is already in place; maintain it
- LF line endings only (no CRLF) — `.gitattributes` enforces this
- Use `printf` instead of `echo` for portability (already established)
- Quote all variable expansions: `"$VAR"`, not `$VAR`
- Use `command -v` for binary checks, not `which`
### Docker Compose
- Pin image versions explicitly (never use `:latest`)
- Use named volumes for persistent data
- Document any new environment variables in both `.env.example` and `README.md`
### Documentation
- README is in Spanish (user-facing); CONTRIBUTING.md is in English (contributor-facing)
- Keep the configuration table in README.md in sync with `.env.example`
- Use Markdown tables for structured data
### Commits
- Use [Conventional Commits](https://www.conventionalcommits.org/): `feat:`, `fix:`, `docs:`, `chore:`, `refactor:`
- Keep the subject line under 72 characters
- Reference issues in the body when applicable
---
## Testing
There is no automated test suite. Manual verification before submitting a PR:
1. Run `./deploy.sh` on a clean environment (remove existing containers/volumes)
2. Verify both services come up healthy
3. Test the `.env.example``.env` copy path works
4. If you changed `docker-compose.yml`, verify `docker compose config` validates
5. If you changed `deploy.sh`, test on both Linux and WSL2 if possible
---
## Ecosystem Context
d0a1 Quickstart is the entry point to the d0a1 ecosystem:
| Repository | Role |
|---|---|
| [storeroom-os](https://git.d0a1.es/d0a1/storeroom-os) | Main production app |
| [sdl-framework](https://git.d0a1.es/d0a1/sdl-framework) | Development framework |
| [engineering-standards](https://git.d0a1.es/d0a1/engineering-standards) | Standards content |
| [quickstart](https://git.d0a1.es/monyi/quickstart) | This repo — local AI quickstart |
---
## Reporting Issues
Open an issue at https://git.d0a1.es/monyi/quickstart/issues with:
1. A clear title describing the problem or feature
2. Steps to reproduce (for bugs)
3. Expected vs actual behavior
4. OS and Docker version information
5. Relevant logs (`docker compose logs`)
---
## License
By contributing, you agree that your contributions are licensed under the MIT license.