# What is MyJekyllBlog? MyJekyllBlog is a project to provide a SaaS web interface to Jekyll backed with a CMS and web hosting infrastructure. ## What are the systems? ### Web Panel The web panel allows users of the service to create and manage their Jeykll blogs. The following functionality should exist: * Wizard to create a new blog * Editor panel that lists articles * Editor panel that lists pages * Editor panel that allows creating a new article * Editor panel that allows creating a new page * Editor panel that allows editing an existing article * Editor panel that allows editing an existing page * Manager panel that shows last deployment * Manager panel that allows deploying the blog * Manager panel that allows adding a custom domain name to the blog * Manager panel that shows list of commits and which one is deployed * Manager panel that allows selecting an alternative commit and deploying it ### Database Server The database server holds the database for the `Web Panel` and for the `Build Server`. ### Gitea Server The gitea server will have user mapping between the `Web Panel` and Gitea. Users websites will be held as repos here. ### Build Server The build server will check out the repo, build the static site and deploy it to whichever `Web Server` it should be deployed to. ### SSL Server The SSL server will run certbot. The `/.well-known` directory should be proxied to this server so that HTTP challenges can be used. ### Web Servers Web servers will host static content for Jeykll blogs. ## How does it work? ### Create a new account on MyJekyllBlog ```mermaid sequenceDiagram User ->>+Web Panel: Register with name, email, password Web Panel->>+Database: Create user account for panel Web Panel->>+Gitea Minion: Create Gitea User Web Panel->>-User: Log the user into their account ``` ### Deploy a Jekyll blog ### Create a new post a Jekyll blog ###