Skip to main content

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

Project description

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

pip install focomy
focomy init mysite
cd mysite
focomy serve

Using Docker

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

pip install focomy

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

From Source

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

CLI Commands

# 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

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

security:
  secret_key: "your-secret-key"

Content Types

Define in content_types/*.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

Render

Deploy to Render

Docker Compose

docker-compose up -d

Documentation

License

MIT License - see LICENSE for details.

Contributing

Contributions welcome! Please read our Contributing Guide.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

focomy-0.1.0.tar.gz (271.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

focomy-0.1.0-py3-none-any.whl (308.8 kB view details)

Uploaded Python 3

File details

Details for the file focomy-0.1.0.tar.gz.

File metadata

  • Download URL: focomy-0.1.0.tar.gz
  • Upload date:
  • Size: 271.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for focomy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f7144aca4f6db026c16efa049b7213b97c0e5b548ece23772e7c38e7dcd6adbc
MD5 d8841d26e217e838a5acfac8d574287c
BLAKE2b-256 7aaa22d37dfe31945003a7a52304e04c54f898711318a028444c3ce564334ea4

See more details on using hashes here.

File details

Details for the file focomy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: focomy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 308.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.7

File hashes

Hashes for focomy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 593d52cd92a07a517a1da0bf6d6cb8ec937f701f36ffebabb21f6036cd5feac4
MD5 f26f1753114c0b40499ccf40058f39af
BLAKE2b-256 0f4a7bb9a76e1d252db4e157b0a91737b86205492130c722c905a6b4d621a1ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page