{"id":25216705,"url":"https://github.com/chroniconl/cms","last_synced_at":"2025-04-05T09:16:21.390Z","repository":{"id":276567832,"uuid":"815639131","full_name":"chroniconl/cms","owner":"chroniconl","description":"(my favorite) cms for publishing blog posts","archived":false,"fork":false,"pushed_at":"2024-10-08T23:28:05.000Z","size":1591,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T16:50:58.532Z","etag":null,"topics":["nextjs","server-components","shadcn-ui","supabase","typescript"],"latest_commit_sha":null,"homepage":"https://chroniconl.com","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/chroniconl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-15T17:30:03.000Z","updated_at":"2025-02-08T15:02:09.000Z","dependencies_parsed_at":"2025-02-09T04:52:23.109Z","dependency_job_id":"abb2a98b-5397-421b-892b-63954a1f7128","html_url":"https://github.com/chroniconl/cms","commit_stats":null,"previous_names":["chroniconl/cms","matthewbub/chroniconl-cms"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chroniconl%2Fcms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chroniconl%2Fcms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chroniconl%2Fcms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chroniconl%2Fcms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chroniconl","download_url":"https://codeload.github.com/chroniconl/cms/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247312061,"owners_count":20918344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["nextjs","server-components","shadcn-ui","supabase","typescript"],"created_at":"2025-02-10T19:31:25.118Z","updated_at":"2025-04-05T09:16:21.362Z","avatar_url":"https://github.com/chroniconl.png","language":"TypeScript","readme":"# Chroniconl\n\n[![MIT License](https://img.shields.io/badge/license-MIT-yellow.svg)](./LICENSE)\n\nJust a fun project I'm working on.\n\n## Features\n\n**Observatory (Preview)**\n\nWork with raw HTML content to consult AI / preform common tasks.\n\n\u003cimg src=\"https://azhrbvulmwgxcijoaenn.supabase.co/storage/v1/object/public/my-blog/ObserverToolBeta.png\" width=\"400px\" /\u003e\n\nBlog post management\n\n\u003cimg src=\"https://utfs.io/f/de9040b8-09c8-4c22-97b5-016af9032942-8jt8nz.png\" width=\"400px\" /\u003e\n\nPost dashboard\n\n\u003cimg src=\"https://utfs.io/f/fa6598a9-f42b-41c4-adeb-7772a7773ab0-ft8p6c.png\" width=\"400px\" /\u003e\n\nMedia gallery\n\n\u003cimg src=\"https://utfs.io/f/2fb013f8-3ef0-48c2-915c-608ec8b8ac81-vu6z6v.png\" width=\"400px\" /\u003e\n\nMore coming soon...\n\n## Table of Contents\n\n- [Why?](#why)\n- [Getting Started](#getting-started)\n- [Contributing / Bug Reports](#contributing--bug-reports)\n\n## Why?\n\nWhy build a CMS when you could use one of the many alternatives?\n\n1. I'm having fun taking this project as far as it can go.\n\n## Getting Started\n\n### Prerequisites and accounts required\n\n- Node.js\n- Pnpm\n- GitHub account (Some knowledge of Git is required)\n- $ Vercel account (Hosting)\n- $ Supabase account (API keys required)\n- $ Clerk account (API keys required)\n- $ Resend account (API keys required)\n\n\u003e I'm working on consolidating some of these. Please check back soon or consider contributing if you'd like to help out.\n\n### Installation\n\n#### 1. Clone the repo\n\nFirst, clone the repo:\n\n```shell\ngit clone https://github.com/chroniconl/cms\n```\n\n#### 2. Install dependencies with `pnpm install`\n\nNavigate to the root directory and run `pnpm install`.\n\n```shell\ncd cms\npnpm install\n```\n\n#### 3. Create a `.env.local` file in the root directory\n\nYou can use the `example.env.local` file as a template for your `.env.local` file. Note the comments in the file, follow the links provided to obtain your API keys. **If you try to start the project without these keys, you'll run into errors or at the least, unexpected behavior.**\n\n```shell\n# Development Options\nDEV=true # or DEVELOPMENT=true\n\n# Site URL\n# Example: https://example.com\nNEXT_PUBLIC_SITE_URL=\n\n# https://dashboard.clerk.com/apps\nNEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=\nCLERK_SECRET_KEY=\n\n# You don't need to change these!\n# They map to files we've defined in the app router `./src/app/*`\nNEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in\nNEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up\nNEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/\nNEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/\n\n# https://supabase.com/dashboard/project/\nNEXT_PUBLIC_SUPABASE_URL=\nNEXT_PUBLIC_SUPABASE_ANON_KEY=\nSUPABASE_SERVICE_ROLE_KEY=\nSUPABASE_STORAGE_BUCKET_URL=\n\nRESEND_KEY=\nADMIN_EMAIL=\n```\n\nFollow the steps in the [Supabase](./docs/Supabase.md) doc to get setup with Supabase.\n\n### Start the project\n\nNow that you have your `.env.local` file set up, and storage is setup in Supabase, you can start the project.\n\n```shell\npnpm run dev\n```\n\nThis will start the project in development mode, and you can make changes to the code and see the changes in real-time. Visit `http://localhost:3000` to view the project.\n\n### Deploy to Vercel\n\nOnce you're ready to deploy, you can use Vercel to deploy the project to your own domain.\n\n1. Create a Vercel account if you don't already have one.\n2. Navigate to the project on Vercel.\n3. Click the \"Deploy\" button.\n4. Follow the prompts to deploy the project to your own domain.\n\n### Contributors Setup\n\n1. Fork this repository\n2. Clone the forked repository to your local machine, or open a new Code Space\n3. Checkout to a clean branch. e.g git checkout feature/addSomeCode (Please be more descriptive)\n4. (Follow the steps in [Getting Started](#getting-started) to install dependencies)\n5. You're all set up. Run pnpm run build to run the production build and ensure everything is working. If not, please open an issue in https://github.com/chroniconl/cms/issues 🙂\n\n## FAQ\n\n### Can you elaborate on why WordPress can't solve your problem?\n\nSecurity for the most part. I once deployed api.chroniconl.com to Digital Ocean and not even 15 minutes later I had bots crawling my site for what I assume to be potential vulnerabilities in WordPress architecture. This is the kind of behavior I often see.\n\n\u003cimg src=\"https://azhrbvulmwgxcijoaenn.supabase.co/storage/v1/object/public/my-blog/ThisIsWhyISayNoWordPress.png\" height=\"400px\" /\u003e\n\n### Why is my Blog Post not showing up?\n\nIf you've already created a blog post and are expecting it to show up on the homepage or be accessible via direct link, make sure you've set the posts \"Visibility\" field to \"Public\". In addition, ensure the \"Publish Date\" field is set to a point in the past.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchroniconl%2Fcms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchroniconl%2Fcms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchroniconl%2Fcms/lists"}