Metadata-Version: 2.4
Name: focomy
Version: 0.1.0
Summary: The Most Beautiful CMS - A metadata-driven, zero-duplicate-code content management system
Project-URL: Homepage, https://github.com/focomy/focomy
Project-URL: Documentation, https://focomy.dev/docs
Project-URL: Repository, https://github.com/focomy/focomy
Project-URL: Issues, https://github.com/focomy/focomy/issues
Author: Focomy Team
License-Expression: MIT
License-File: LICENSE
Keywords: blog,cms,content-management,fastapi,headless-cms,website
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
Requires-Python: >=3.10
Requires-Dist: aiofiles>=23.2.0
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: alembic>=1.13.0
Requires-Dist: asyncpg>=0.29.0
Requires-Dist: authlib>=1.2.0
Requires-Dist: bcrypt>=4.1.0
Requires-Dist: email-validator>=2.1.0
Requires-Dist: fastapi>=0.104.0
Requires-Dist: httpx>=0.25.0
Requires-Dist: itsdangerous>=2.1.0
Requires-Dist: jinja2>=3.1.2
Requires-Dist: pillow>=10.1.0
Requires-Dist: pydantic-settings>=2.1.0
Requires-Dist: pydantic>=2.5.0
Requires-Dist: pyotp>=2.9.0
Requires-Dist: python-jose[cryptography]>=3.3.0
Requires-Dist: python-multipart>=0.0.6
Requires-Dist: python-slugify>=8.0.1
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: slowapi>=0.1.9
Requires-Dist: sqlalchemy[asyncio]>=2.0.0
Requires-Dist: structlog>=24.1.0
Requires-Dist: uvicorn[standard]>=0.24.0
Provides-Extra: all
Requires-Dist: redis>=5.0.0; extra == 'all'
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: mypy>=1.7.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Provides-Extra: redis
Requires-Dist: redis>=5.0.0; extra == 'redis'
Description-Content-Type: text/markdown

# Focomy

**The Most Beautiful CMS** - A metadata-driven, zero-duplicate-code content management system.

## Features

- **Metadata-Driven**: Define content types in YAML, no code changes needed
- **Zero Duplicate Code**: One EntityService handles all content types
- **First-Class Relations**: Many-to-many, many-to-one, self-referential
- **Built-in SEO**: JSON-LD, OGP, Twitter Cards, Sitemap, RSS/Atom feeds
- **Modern Stack**: FastAPI, PostgreSQL, HTMX, Editor.js
- **Security First**: HSTS, CSP, CSRF protection, rate limiting

## Quick Start

### Using pip

```bash
pip install focomy
focomy init mysite
cd mysite
focomy serve
```

### Using Docker

```bash
git clone https://github.com/focomy/focomy.git
cd focomy
docker-compose up -d
```

Open http://localhost:8000/admin

## Installation

### Requirements

- Python 3.10+
- PostgreSQL 13+

### From PyPI

```bash
pip install focomy

# With Redis support (for caching/sessions)
pip install focomy[redis]
```

### From Source

```bash
git clone https://github.com/focomy/focomy.git
cd focomy
pip install -e .
```

## CLI Commands

```bash
# Initialize a new site
focomy init mysite

# Start development server
focomy serve --port 8000

# Run database migrations
focomy migrate

# Validate content type definitions
focomy validate

# Check for updates
focomy update --check

# Update to latest version
focomy update
```

## Configuration

### config.yaml

```yaml
site:
  name: "My Site"
  url: "https://example.com"
  language: "ja"

security:
  secret_key: "your-secret-key"
```

### Content Types

Define in `content_types/*.yaml`:

```yaml
name: post
label: Post
fields:
  - name: title
    type: string
    required: true
  - name: body
    type: blocks
  - name: status
    type: select
    options: [draft, published]
```

## Deployment

### Railway

[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/focomy)

### Render

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/focomy/focomy)

### Docker Compose

```bash
docker-compose up -d
```

## Documentation

- [Getting Started](https://focomy.dev/docs/getting-started)
- [Content Types](https://focomy.dev/docs/content-types)
- [API Reference](https://focomy.dev/docs/api)
- [Theming](https://focomy.dev/docs/theming)

## License

MIT License - see [LICENSE](LICENSE) for details.

## Contributing

Contributions welcome! Please read our [Contributing Guide](CONTRIBUTING.md).
