{"id":49321687,"url":"https://github.com/snowztech/barecms","last_synced_at":"2026-04-26T18:02:07.763Z","repository":{"id":249716295,"uuid":"831703515","full_name":"snowztech/barecms","owner":"snowztech","description":"Headless CMS designed with bare minimalism in mind","archived":false,"fork":false,"pushed_at":"2025-07-30T20:15:34.000Z","size":26125,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-30T22:55:35.027Z","etag":null,"topics":["cms","content-management-system","docker","docker-compose","go","golang","hacktoberfest","headless-cms","lightweight","open-source","opensource","react","typescript"],"latest_commit_sha":null,"homepage":"https://barecms.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snowztech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"lucasnevespereira","buy_me_a_coffee":"lucaasnp"}},"created_at":"2024-07-21T11:31:11.000Z","updated_at":"2025-07-21T13:11:46.000Z","dependencies_parsed_at":"2025-07-19T16:06:55.709Z","dependency_job_id":null,"html_url":"https://github.com/snowztech/barecms","commit_stats":null,"previous_names":["lucasnevespereira/barecms","snowztech/barecms"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/snowztech/barecms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowztech%2Fbarecms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowztech%2Fbarecms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowztech%2Fbarecms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowztech%2Fbarecms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowztech","download_url":"https://codeload.github.com/snowztech/barecms/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowztech%2Fbarecms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32307016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T17:23:19.671Z","status":"ssl_error","status_checked_at":"2026-04-26T17:23:19.195Z","response_time":129,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cms","content-management-system","docker","docker-compose","go","golang","hacktoberfest","headless-cms","lightweight","open-source","opensource","react","typescript"],"created_at":"2026-04-26T18:02:07.215Z","updated_at":"2026-04-26T18:02:07.753Z","avatar_url":"https://github.com/snowztech.png","language":"TypeScript","funding_links":["https://github.com/sponsors/lucasnevespereira","https://buymeacoffee.com/lucaasnp"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"ui/public/logo.png\" alt=\"BareCMS Logo\" width=\"120\" height=\"120\"\u003e\n\n\u003ch1\u003eBareCMS\u003c/h1\u003e\n\n\u003ch3\u003e\u003cem\u003eA lightweight, open-source headless CMS designed with bare minimalism in mind\u003c/em\u003e\u003c/h3\u003e\n\n\u003cimg src=\"https://img.shields.io/github/contributors/snowztech/barecms?style=plastic\" alt=\"Contributors\"\u003e\n\u003cimg src=\"https://img.shields.io/github/forks/snowztech/barecms\" alt=\"Forks\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/snowztech/barecms\" alt=\"Stars\"\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/snowztech/barecms\" alt=\"Issues\"\u003e\n\u003cimg src=\"https://img.shields.io/github/repo-size/snowztech/barecms\" alt=\"Repository Size\"\u003e\n\u003ca href=\"LICENSE\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green.svg\" alt=\"MIT License\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://github.com/sponsors/lucasnevespereira\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Sponsor-GitHub-333333?style=flat\u0026logo=github\u0026logoColor=white\" alt=\"Sponsor\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://snowztech.github.io/barecms-docs\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docs-Live-blue?style=flat\u0026logo=gitbook\u0026logoColor=white\" alt=\"Live Documentation\"\u003e\n\u003c/a\u003e\n\n\u003c/div\u003e\n\n## 📋 Table of Contents\n\n- [🎬 Demo](#-demo)\n- [✨ Features](#-features)\n- [🚀 Quick Start](#-quick-start)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Development Commands](#development-commands)\n- [🐳 Deployment](#-deployment)\n  - [Docker Compose (Recommended)](#docker-compose-recommended)\n  - [Docker Only](#docker-only)\n- [📖 Documentation](#-documentation)\n- [🧪 API Reference](#-api-reference)\n- [🤝 Contributing](#-contributing)\n- [🗺️ Roadmap](#️-roadmap)\n- [💬 Community](#-community)\n- [📄 License](#-license)\n- [💖 Support](#-support)\n\n## 🎬 Demo\n\n![BareCMS Demo](assets/demo.gif)\n\n## ✨ Features\n\n- **🎯 Minimalist Design**: Clean, intuitive interface focused on content management\n- **⚡ Fast \u0026 Lightweight**: Built with performance in mind using Go and React\n- **🔧 Headless Architecture**: Use any frontend framework or static site generator\n- **🐳 Docker Ready**: Easy deployment with Docker and Docker Compose\n- **🔐 Secure Authentication**: JWT-based authentication system\n- **🗃️ Flexible Content Management**: Support for sites, collections, and entries\n- **🚀 Production Ready**: Built with scalability and reliability in mind\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n**For Quick Deployment:**\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n- [Make](https://www.gnu.org/software/make/) (optional, for simplified commands)\n\n**For Local Development:**\n\n- [Node.js](https://nodejs.org/) (v18+ recommended)\n- [Go](https://golang.org/) (v1.21+ recommended)\n\n### Installation\n\n1. **Clone the repository**\n\n```bash\n  git clone https://github.com/snowztech/barecms.git\n  cd barecms\n```\n\n2. **Set up environment variables**\n\n```bash\ncp .env.example .env\n```\n\nEdit `.env` and update the `JWT_SECRET` with a strong, random string:\n\n```bash\n# Generate a secure JWT secret\nopenssl rand -base64 32\n```\n\n3. **Start the application**\n\n```bash\n  make up\n```\n\n4. **Access BareCMS**\n\nOpen your browser and navigate to [http://localhost:8080](http://localhost:8080)\n\n### Development Commands\n\n```bash\nmake up       # Start development environment\nmake ui       # Build UI (frontend)\nmake clean    # Stop and cleanup containers\nmake logs     # View application logs\nmake help     # Show all available commands\n```\n\n## 🐳 Deployment\n\n### Docker Compose (Recommended)\n\n**Step 1: Create your project directory**\n\n```sh\nmkdir barecms-app \u0026\u0026 cd barecms-app\n```\n\n**Step 2: Create configuration files**\n\nCreate `.env` file:\n\n```env\n# Security (REQUIRED)\nJWT_SECRET=your-super-secret-jwt-key-here\n\n# Database Configuration\nPOSTGRES_USER=barecms_user\nPOSTGRES_PASSWORD=your-secure-password\nPOSTGRES_DB=barecms_db\nDATABASE_URL=postgresql://barecms_user:your-secure-password@postgres:5432/barecms_db\n\n# Application\nPORT=8080\n```\n\nCreate a `docker-compose.yml` file with the following content:\n\n```yaml\nservices:\n  postgres:\n    image: postgres:16-alpine\n    env_file: .env\n    volumes:\n      - postgres_data:/var/lib/postgresql/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}\"]\n      interval: 5s\n      timeout: 5s\n      retries: 5\n    restart: unless-stopped\n\n  barecms:\n    image: ghcr.io/snowztech/barecms:latest\n    ports:\n      - \"${PORT:-8080}:8080\"\n    env_file: .env\n    depends_on:\n      postgres:\n        condition: service_healthy\n    restart: unless-stopped\n\nvolumes:\n  postgres_data:\n```\n\n**Step 3: Launch BareCMS**\n\n```bash\ndocker-compose up -d\n```\n\n🎉 **BareCMS is now running at [http://localhost:8080](http://localhost:8080)**\n\n### Management Commands\n\n```sh\n# View logs\ndocker compose logs -f barecms\n\n# Stop BareCMS\ndocker compose down\n\n# Update to latest version\ndocker compose pull \u0026\u0026 docker compose up -d\n\n# Backup database\ndocker compose exec postgres pg_dump -U barecms_user barecms_db \u003e backup.sql\n\n# Access database shell\ndocker compose exec postgres psql -U barecms_user -d barecms_db\n```\n\n### Docker Only\n\nFor direct Docker usage without Compose:\n\n```bash\n# 1. Start PostgreSQL\ndocker run -d --name barecms-postgres \\\n  -e POSTGRES_USER=barecms_user \\\n  -e POSTGRES_PASSWORD=your-secure-password \\\n  -e POSTGRES_DB=barecms_db \\\n  -v postgres_data:/var/lib/postgresql/data \\\n  postgres:16-alpine\n\n# 2. Start BareCMS (wait ~30 seconds for postgres to be ready)\ndocker run -d --name barecms-app \\\n  -p 8080:8080 \\\n  -e JWT_SECRET=your-super-secret-jwt-key-here \\\n  -e DATABASE_URL=postgresql://barecms_user:your-secure-password@barecms-postgres:5432/barecms_db \\\n  --link barecms-postgres \\\n  ghcr.io/snowztech/barecms:latest\n```\n\n## 📖 Documentation\n\n- **[Live Documentation](https://snowztech.github.io/barecms-docs)** - Complete documentation\n- **[Contributing Guide](docs/CONTRIBUTING.md)** - How to contribute to BareCMS\n- **[API Documentation](docs/API.md)** - Complete API reference\n- **[Self Hosting Guide](docs/SELF_HOSTING.md)** - Complete Self Hosting Guide\n\n## 🧪 API Reference\n\n### 🌐 Public Data Access\n\nRetrieve all site content publicly without authentication. This is the primary endpoint for headless usage.\n\n**Endpoint:** `GET /api/:siteSlug/data`\n\n**Description:** Returns all collections and entries for a site using its slug. BareCMS keeps it simple by organizing all content under a `data` field, where each collection is accessible by its slug containing an array of entries with their field values directly accessible.\n\n**Parameters:**\n\n- `siteSlug` (path) - The unique slug of the site\n\n**Example Request:**\n\n```bash\ncurl -X GET http://localhost:8080/api/myblog/data\n```\n\n**Example Response:**\n\n```json\n{\n  \"id\": \"44394f36-daa3-451c-970f-59238c46ce36\",\n  \"name\": \"myblog\",\n  \"slug\": \"myblog\",\n  \"data\": {\n    \"articles\": [\n      {\n        \"content\": \"this is my article post content\",\n        \"draft\": \"false\",\n        \"published\": \"2025-07-21\",\n        \"title\": \"my sample article\"\n      }\n    ],\n    \"products\": [\n      {\n        \"name\": \"Sample Product\",\n        \"price\": \"29.99\",\n        \"description\": \"A great product for everyone\"\n      }\n    ]\n  }\n}\n```\n\n**Response Structure:**\n\n- `id` - The unique identifier of the site\n- `name` - The name of the site\n- `slug` - The URL-friendly slug of the site\n- `data` - Object containing all collections, where:\n  - Each key is a collection slug (e.g., \"articles\", \"products\")\n  - Each value is an array of entries for that collection\n  - Entry objects contain field names as keys with their values directly accessible (no nested `data` object)\n\nThis simple structure makes it easy to consume in frontend applications - you can directly access `response.data.articles` to get all articles, or `response.data.products` for products, etc.\n\n**Quick Usage Example**\n\n```javascript\nconst barecmsHost = \"http://localhost:8080\";\n\n// Fetch all data for a site\nasync function fetchSiteData(siteSlug) {\n  try {\n    const response = await fetch(`${barecmsHost}/api/${siteSlug}/data`);\n    const data = await response.json();\n    return data;\n  } catch (error) {\n    console.error(\"Error fetching site data:\", error);\n  }\n}\n\n// Usage\nfetchSiteData(\"my-blog\").then((data) =\u003e {\n  console.log(data.data.articles); // Access your articles\n  console.log(data.data.products); // Access your products\n});\n```\n\n### 📚 Complete API Documentation\n\nFor detailed documentation of all authentication and content management endpoints, see **[API.md](docs/API.md)**.\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.\n\n### How to Contribute\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Make your changes** and test them thoroughly\n4. **Commit your changes**: `git commit -m 'Add amazing feature'`\n5. **Push to your branch**: `git push origin feature/amazing-feature`\n6. **Open a Pull Request**\n\n### Development Guidelines\n\n- Follow Go best practices and conventions\n- Update documentation when needed\n- Use conventional commit messages\n- Ensure your code passes all CI checks\n\nFor detailed contributing guidelines, see [CONTRIBUTING.md](docs/CONTRIBUTING.md).\n\n## 🗺️ Roadmap\n\n### 🔄 Current Focus\n\n- [ ] Enhanced documentation\n- [ ] Improve auth flow\n- [ ] Content import/export\n\n_Keep it simple. [Suggest features](https://github.com/snowztech/barecms/issues) that align with our minimal philosophy._\n\n## 💬 Community\n\n- **🐛 Report Issues**: [GitHub Issues](https://github.com/snowztech/barecms/issues)\n- **💬 Discussions**: [GitHub Discussions](https://github.com/snowztech/barecms/discussions)\n- **🚀 Want to see a feature?**: [Open a issue](https://github.com/snowztech/barecms/issues)\n\n## License\n\nMIT License. See the [LICENSE](LICENSE) file for details.\n\n## 💖 Support\n\nBareCMS is free and open source, inspired by the need for a truly minimal yet powerful CMS solution.\n\n\u003cdiv align=\"center\"\u003e\n\nIf BareCMS helps you build something awesome, [⭐ star the repo](https://github.com/snowztech/barecms) or [❤️ support the project](https://github.com/sponsors/lucasnevespereira)\n\n\u003csub\u003eBuilt with care by [SnowzTech](https://github.com/snowztech) • Keep it simple\u003c/sub\u003e\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowztech%2Fbarecms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnowztech%2Fbarecms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnowztech%2Fbarecms/lists"}