Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# === Core ===
|
||||
PROJECT_NAME=
|
||||
PROJECT_VERSION=1.0.0
|
||||
PROJECT_ENV=local
|
||||
|
||||
# === Server ===
|
||||
SERVER_HOST=0.0.0.0
|
||||
SERVER_PORT=8020
|
||||
# SERVER_EXTERNAL_URL=http://your-domain.com:8020
|
||||
|
||||
# === Database ===
|
||||
# [ASK]: SQLite для dev или PostgreSQL?
|
||||
# DATABASE_URL=sqlite+aiosqlite:///./app.db
|
||||
# DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
|
||||
|
||||
# === JWT ===
|
||||
JWT_SECRET_KEY=
|
||||
JWT_ALGORITHM=HS256
|
||||
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=60
|
||||
JWT_REFRESH_TOKEN_EXPIRE_DAYS=30
|
||||
|
||||
# === AI (опционально) ===
|
||||
# AI_PROVIDER_KEY=
|
||||
# AI_FALLBACK_MODEL=yandex_gpt
|
||||
# AI_TIMEOUT=10
|
||||
|
||||
# === OAuth (опционально) ===
|
||||
# OAUTH_YANDEX_ID=
|
||||
# OAUTH_YANDEX_SECRET=
|
||||
# OAUTH_GOOGLE_ID=
|
||||
# OAUTH_GOOGLE_SECRET=
|
||||
|
||||
# === Email (опционально) ===
|
||||
# SMTP_HOST=
|
||||
# SMTP_PORT=587
|
||||
# SMTP_USER=
|
||||
# SMTP_PASS=
|
||||
|
||||
# === Logging ===
|
||||
LOG_LEVEL=INFO
|
||||
# LOG_LEVEL=DEBUG
|
||||
@@ -0,0 +1,38 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*.egg-info/
|
||||
dist/
|
||||
*.egg
|
||||
.venv/
|
||||
venv/
|
||||
env/
|
||||
|
||||
# Node
|
||||
node_modules/
|
||||
webui/dist/
|
||||
|
||||
# Environment
|
||||
.env
|
||||
.env.local
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
*.log
|
||||
|
||||
# Database
|
||||
*.db
|
||||
*.sqlite3
|
||||
|
||||
# Documentation build
|
||||
docs/_build/
|
||||
@@ -0,0 +1,16 @@
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.8.4
|
||||
hooks:
|
||||
- id: ruff
|
||||
args: [--fix]
|
||||
- id: ruff-format
|
||||
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.6.0
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-added-large-files
|
||||
args: [--maxkb=500]
|
||||
- id: check-merge-conflict
|
||||
@@ -0,0 +1,12 @@
|
||||
# Changelog
|
||||
|
||||
Все заметные изменения в этом проекте.
|
||||
|
||||
Формат: [Keep a Changelog](https://keepachangelog.com/)
|
||||
Версионирование: [SemVer](https://semver.org/)
|
||||
|
||||
## [1.0.0] - {date}
|
||||
|
||||
### Added
|
||||
- Первый релиз проекта
|
||||
- Базовая функциональность
|
||||
@@ -0,0 +1,35 @@
|
||||
# Conventional Commits — шпаргалка
|
||||
|
||||
```
|
||||
<тип>[optional scope]: <описание>
|
||||
|
||||
[optional body]
|
||||
[optional footer]
|
||||
```
|
||||
|
||||
## Типы
|
||||
|
||||
| Тип | Описание | Версия |
|
||||
|-----|----------|--------|
|
||||
| `feat` | Новая функция | MINOR |
|
||||
| `fix` | Исправление бага | PATCH |
|
||||
| `BREAKING` | Несовместимое изменение | MAJOR |
|
||||
| `docs` | Документация | — |
|
||||
| `style` | Форматирование | — |
|
||||
| `refactor` | Рефакторинг | — |
|
||||
| `test` | Тесты | — |
|
||||
| `chore` | Обслуживание | — |
|
||||
|
||||
## Примеры
|
||||
|
||||
```
|
||||
feat(auth): add OAuth2 login with Yandex
|
||||
|
||||
fix: handle empty list in idea search
|
||||
|
||||
BREAKING: change API response format
|
||||
|
||||
docs: update README with setup instructions
|
||||
|
||||
refactor: extract IdeaService from api/ideas.py
|
||||
```
|
||||
@@ -0,0 +1,11 @@
|
||||
FROM python:3.12-slim AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
FROM builder AS production
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
EXPOSE 8020
|
||||
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8020"]
|
||||
@@ -0,0 +1,27 @@
|
||||
# {Project Name}
|
||||
|
||||
{Одна строка описания проекта}
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Редактировать .env
|
||||
|
||||
pip install -r requirements.txt
|
||||
|
||||
uvicorn app.main:app --reload
|
||||
```
|
||||
|
||||
## Разработка
|
||||
|
||||
Проект следует правилам, описанным в `docs/`. Обязательно прочитайте:
|
||||
1. `docs/00-rules.md` — основные правила
|
||||
2. `docs/03-project-structure.md` — структура проекта
|
||||
3. `docs/01-architecture.md` — архитектура
|
||||
|
||||
## API
|
||||
|
||||
- `/docs` — Swagger UI
|
||||
- `/redoc` — ReDoc
|
||||
- `/openapi.json` — OpenAPI spec
|
||||
@@ -0,0 +1,43 @@
|
||||
services:
|
||||
app:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
ports:
|
||||
- "8020:8020"
|
||||
env_file: .env
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_started
|
||||
|
||||
worker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
command: celery -A app.tasks worker -l info
|
||||
env_file: .env
|
||||
depends_on:
|
||||
- db
|
||||
- redis
|
||||
|
||||
db:
|
||||
image: postgres:14
|
||||
environment:
|
||||
POSTGRES_DB: voidea
|
||||
POSTGRES_USER: voidea
|
||||
POSTGRES_PASSWORD: ${DB_PASS}
|
||||
volumes:
|
||||
- pgdata:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U voidea"]
|
||||
interval: 5s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
|
||||
volumes:
|
||||
pgdata:
|
||||
Reference in New Issue
Block a user