{"id":16391023,"url":"https://github.com/rishikanthc/markopolis","last_synced_at":"2025-04-05T08:05:25.212Z","repository":{"id":251051451,"uuid":"836194887","full_name":"rishikanthc/markopolis","owner":"rishikanthc","description":"Markdown Programmable Interface","archived":false,"fork":false,"pushed_at":"2024-10-21T17:08:18.000Z","size":6588,"stargazers_count":166,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T06:03:30.506Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://markopolis.app","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/rishikanthc.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":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-31T10:47:47.000Z","updated_at":"2025-03-17T18:51:35.000Z","dependencies_parsed_at":"2024-10-22T03:27:32.108Z","dependency_job_id":null,"html_url":"https://github.com/rishikanthc/markopolis","commit_stats":null,"previous_names":["rishikanthc/markpi"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishikanthc%2Fmarkopolis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishikanthc%2Fmarkopolis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishikanthc%2Fmarkopolis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rishikanthc%2Fmarkopolis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rishikanthc","download_url":"https://codeload.github.com/rishikanthc/markopolis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305933,"owners_count":20917208,"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":[],"created_at":"2024-10-11T04:44:52.202Z","updated_at":"2025-04-05T08:05:25.172Z","avatar_url":"https://github.com/rishikanthc.png","language":"TypeScript","funding_links":[],"categories":["10、基础服务架构","others"],"sub_categories":["9、效率工具集合"],"readme":"## Introduction\nHi,\nI’m [Rishikanth](https://rishikanth.me), and I’m excited to introduce you to Markopolis! It’s a web app and API server I\nbuilt that lets you easily share your Markdown notes as websites while giving you full control to\ninteract with and manage your Markdown files via a powerful API. Just point Markopolis to a folder\nwith your Markdown files, and it’ll handle the rest. The idea is to help you create your own tools\nand features around your notes without being tied down by proprietary systems. It’s completely\nopen-source and free under the MIT License. Check out the [GitHub repo](https://github.com/rishikanthc/markopolis) and start exploring!\n\n**TLDR:** Self-hosted Obsidian publish with an API to extend functionality.\n\n## Features\n\n- **Easy setup** Extremely simple to deploy and use\n- **Easy publish** Publish notes online with a single command\n- **Markdown API interface** Interact with aspecs of markdown using REST APIs\n- **Extensible** Extendable using exposed APIs\n- **Develop your own frontend** You can use the api calls to get every section of markdown files to design your own frontend\n- **Instand rendering** Article is available online as soon as ypu publish\n- **Full text search** Fuzzy search across your entire notes vault\n- **Obsidian markdown flavor** Maintains compatibility with obsidian markdown syntax. Supports\n  callouts, equations, code highlighting etc.\n- **Dark \u0026 Light modes** Supports toggling between light and dark themes\n- **Easy maintenance** Requires very little to no maintenance\n- **Docker support** Available as docker images to self host\n\nand lots more to come. Checkout the [roadmap](https://markopolis.app/roadmap) page for planned features.\n\n## Demo\nThe documentation [website](https://markopolis.app) is hosted using Markopolis and is a live demo.\nThese notes are used to demonstrate the various aspects of Markopolis.\nCheckout the [Markdown Syntax](https://markopolis.app/Markdown%20Syntax.md) page for a full showcase of all supported markdown syntax.\n\nThank you for considering Markopolis for your Markdown note-sharing needs! If you like\nthe project considering starring the repository.\n\n## Versioning\n\nI try to follow semantic versioning as much as possible. However, I have still not\nstreamlined the process yet, so please bear with me if there are any mishaps. v2.0.0 achieves\ncode separation between backend and frontend because of which I had to fast forward the\ndocker versioning to match the python package. Going forward I'll try to avoid such mishaps\nand I'll be maintaining a detailed changelog at [changelog](https://markopolis.app/changelog).\n\nThis is my first open-source project and I'm excited to scale it well. I started building this\nmostly out of my personal need, but if there's public interest I'm more than happy to\naccept feature requests and contributions. Any and all feedback is welcome. This project\nwill always be open-source and maintained as I rely on it for my own notes system.\n\nIf you like the project please don't forget to star the [github repo](https://github.com/rishikanthc/markopolis.git).\n\n## Installation\nInstalling Markopolis involves two steps. First deploying the server. Second\ninstalling the CLI tool. The CLI tool provides a utility command to upload\nyour markdown files to the server. The articles are published as soon as\nthis command is run.\n\n## Step 1: Server installation\n\nWe will be using Docker for deploying Markopolis.\nCreate a docker-compose and configure environment variables.\nMake sure to generate and add a secure `API_KEY`.\nAllocate persistent storage for the Markdown files.\n\n\nNext create a `docker-compose.yaml` file with the following:\n\n```yaml\nversion: '3.8'\n\nservices:\n  markopolis:\n    image: ghcr.io/rishikanthc/markopolis:latest\n    ports:\n      - \"8080:8080\"\n      - \"3000:3000\"\n    environment:\n      - POCKETBASE_URL=http://127.0.0.1:8080\n      - API_KEY=test\n      - POCKETBASE_ADMIN_EMAIL=admin@admin.com\n      - POCKETBASE_ADMIN_PASSWORD=password\n      - TITLE=Markopolis\n      - CAP1=caption1\n      - CAP2=caption2\n      - CAP3=caption3\n    volumes:\n      - ./pb_data:/app/db\n```\n\nNow you can deploy Markopolis by running `docker-compse up -d`\n\nParameter | Description\n-- | --\nPOCKETBASE_URL | **DO NOT Change this**\nPOCKETBASE_ADMIN_EMAIL | The admin account email for the database\nPOCKETBASE_ADMIN_PASSWORD | The admin account password\nTITLE | SITE TITLE\nAPI_KEY | For security, most of the API endpoints are protected by an API key. Make sure to use a secure API key and don't share it publicly.\nCAP1 | Caption 1, text that appears below the site title\nCAP2 | Caption 2\nCAP3 | Caption 3\n\n\n\n## STEP 2: Local installation\n\nI highly recommend configuring a virtual environment for python to keep your environment clean and\nand prevent any dependency issues. Below I detail the steps to do this using Conda or pip. If you are familar\nwith this feel free to skip to the package installation section.\n\n\u003e [!info]\n\u003e You need to have python version \u003e= 3.12\n\n### Setting up a virtual environment\n\nYou can use either `pip` or `conda` to do this. If you are using `pip` simply run\n```bash\npython3.12 -m venv \u003cname\u003e\n```\n\nReplace `\u003cname\u003e` with your desired virtual environment name. You can then activate the virtual environment\nusing:\n```bash\nsource \u003cname\u003e\n```\n\nFor conda, you can use\n```bash\nconda create -n \u003cname\u003e python==3.12\n```\n\nand activate it with\n```bash\nconda activate \u003cname\u003e\n```\n\n### Package installation\n\nSimply install the markopolis python package using your preferred package manager.\n\n**pip:**\n```bash\npip install markopolis\n```\n\n### Configuration\n\nSet the environment variables `MARKOPOLIS_DOMAIN` and `MARKOPOLIS_API`\n\n**bash or zsh (temporarily for current session)**\n```bash\nexport MARKOPOLIS_DOMAIN=https://markopolis.example.com\n```\n\n**bash or zsh (permanently for all sessions)**\n```bash\necho 'export MARKOPOLIS_DOMAIN=https://markopolis.example.com' \u003e\u003e ~/.zshrc\necho 'export MARKOPOLIS_DOMAIN=https://markopolis.example.com' \u003e\u003e ~/.bashrc\n\nsource ~/.zshrc\nsource ~/.bashrc\n```\n\n**fish (temporarily for current session)**\n```fish\nset -x MARKOPOLIS_DOMAIN https://markopolis.example.com\n```\n\n\n**fish (permanently for all sessions)**\n```fish\necho 'set -x MARKOPOLIS_DOMAIN \"https://markopolis.example.com\"' \u003e\u003e ~/.config/fish/config.fish\nsource ~/.config/fish/config.fish\n```\n\nFor more information on how to use Markopolis checkout the [Markopolis](https://markopolis.app) website.\nIf you like this project please considering starring it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishikanthc%2Fmarkopolis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishikanthc%2Fmarkopolis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishikanthc%2Fmarkopolis/lists"}