Markdown Blogging, Without Setup or Signup

Overview

You write. We do the rest.

πŸ“ Memos.pub

Memos.pub publishes Markdown files instantly without any setup. If you have a public GitHub repo with Markdown files, you already have a blog. Visit it now:

<user>.memos.pub/<repo>

Examples

Or take a look at specific articles:

Or just prefix a URL (without the protocol) with memos.pub:

Why

Many great ideas don't meet the world because publishing them is still too hard. You either need to put in huge effort to set up a blog on your own, or write on commercial platforms that try their best to lock you in. We believe you, and your ideas, deserve better.

With Memos.pub, you can just write. We will do the rest to get you a blog. You don't need to sign up, or configure, or give us your content. In fact, you don't need to do a thing. We use what you already have in public, and professionally present them for you. You already have a blog.

Features

We do not have any kind of ads, trackers, or collect any personal data.

About

Memos.pub is an open source project. Its complete source code is available on GitHub. We welcome all contributions, questions, feedbacks, requests and more at the project repository. For private concerns, please mail to [email protected].

Comments
  • feat(blog): Integrate with Keva Cloud

    feat(blog): Integrate with Keva Cloud

    Hi @thien-do, please update env vars:

    UPSTASH_REDIS_REST_URL
    UPSTASH_REDIS_REST_TOKEN
    

    To values taken from https://cloud.keva.dev/console

    Notice: please destroy & re-create the instance before getting the credentials, click Connect button:

    image

    UPSTASH_REDIS_REST_URL => https://cloud-rest-api.keva.dev UPSTASH_REDIS_REST_TOKEN => token (without Bearer)

    (remove Bearer string for the token value)

    opened by tuhuynh27 4
  • Date in title is always one day off

    Date in title is always one day off

    Looking at the code: https://github.com/thien-do/memos-pub/blob/514de8d64339c41690986f57ed2a8b6d363eaa0b/lib/blog/dir/entry.tsx#L16

    d = new Date("03.22.2022");
    > Tue Mar 22 2022 00:00:00 GMT+0700 (Indochina Time)
    d.toISOString()
    > '2022-03-21T17:00:00.000Z'
    opened by huyvohcmc 3
  • feat(blog): Support date in title

    feat(blog): Support date in title

    Some blogs have date in their article titles:

    Screen Shot 2022-03-19 at 10 44 54 AM

    At the moment there is no special treatment for them. However we'd like to separate them visually from the rest of the title, like this:

    Screen Shot 2022-03-19 at 10 46 45 AM

    Not all blog uses the same format, or have date, so we just try to support yyyy mm dd, and do nothing if none match:

    yyyy-mm-dd title
    yyyy/mm/dd title
    yyyy.mm.dd title
    

    So I guess the regex is:

    ^\d{4}[-/.]\d{2}[-/.]\d{2} 
    
    Screen Shot 2022-03-19 at 10 44 39 AM

    The change should happen around here:

    https://github.com/thien-do/memos-pub/blob/2601f453bac69d2440a68dfa16b260626fccfc7b/lib/blog/dir/entry.tsx#L17-L21

    help wanted good first issue 
    opened by thien-do 3
  • Does Google find my blog on the internet?

    Does Google find my blog on the internet?

    I have some questions:

    • Does Google find my blog on the internet?
    • Can I add Google Tag Manager / Google Analytics to my blog?
    • Can I add sitemap to my blog?
    question 
    opened by huyng12 3
  • feat(mdx): Open absolute links in new tab

    feat(mdx): Open absolute links in new tab

    [Link](https://memos.pub/)
    

    Current: Links in markdown files open in the same tab. Expected: I think it's better if links in markdown files default to open in a new tab.

    help wanted good first issue 
    opened by tuhuynh27 2
  • Change mono font to Cascadia Mono

    Change mono font to Cascadia Mono

    What

    Change mono font from Cascadia to Cascadia Mono. Initially I want to use font-variant-ligatures: none; but that could affect incoming features where users can have custom memos.pub settings in their repo, including changing default fonts?

    *but the more I think about it, isn't memos.pub's goal is to keep everything simple and it just works? So maybe custom settings shouldn't be a feature? I don't know 🀷

    Why

    Cascadia has ligatures enabled by default, which can trigger some people (me).

    Comparison

    Before

    image

    After

    image

    opened by kcjpop 2
  • feat(blog): Support repo configuration

    feat(blog): Support repo configuration

    In repo root, the user can add configuration via memos.json or .memos or memos.config.js or something else.

    What does configuration file do?

    • Setting fonts, themes
    • Relative assets path if needed
    • Date and title format, even sorting order
    • ...
    opened by monodyle 2
  • Render folder with README.md as content page

    Render folder with README.md as content page

    Currently, memos-pub show every file in a folder. This led to a situation where the folder only has 1 markdown file, for example, README.md, we still list that file.

    notes
    β”” post-001
      β”” README.md
    

    For example https://ledongthuc.memos.pub/notes/leetcode/binary-search-tree-iterator

    image

    A good way to go about this situation is using Github's default behavior, always render the content of README.md file in a folder. There will be a case where the user want to navigate into subfolders, in this case we can skip the render.

    So, to summarize, I think we should adopt a render behavior as follow:

    • If a folder has nothing but a README.md file, we can just render that file out.

      notes
      β”” post-001
        β”” README.md
      
      URL: /notes/post-001 -> Render the README.md
      URL: /notes/post-001/README.md -> Also render the README.md
      
    • If the folder does not have any markdown file, render the folder as a list

      notes
      β”” post-001
        β”” a-sub-folder
      
      URL: /notes/post-001 -> Render the folder list
      URL: /notes/post-001/a-sub-folder -> Render empty list
      

      The empty folder case can be handled in #6

    • If the folder contains both README.md file and other files/folders, render the folder as a list

      notes
      β”” post-001
        β”” README.md
        β”” other.md
        β”” subfolder
          β”” README.md
      
      URL: /notes/post-001 -> Render the folder as a list
      URL: /notes/post-001/README.md -> Render the README.md
      URL: /notes/post-001/subfolder -> Render the subfolder/README.md 
      
    • (Nice to have) If the folder contains both README.md file and other files, but none of them are markdown file, we should consider rendering the README.md file as default:

      notes
      β”” post-001
        β”” README.md
        β”” img.png
        β”” virus.exe
      
      URL: /notes/post-001 -> Render the README.md 
      
    enhancement 
    opened by huytd 2
  • feat(blog): Add loading indicator

    feat(blog): Add loading indicator

    I navigate from this site to the article inside, but the waiting time so long, a little confused about is this page being navigated?

    I think adding a loading icon or process bar will get a better experience for users.

    help wanted good first issue 
    opened by monodyle 1
  • bug:

    bug: "Go home" link in page 404

    What

    image

    Example: https://notes.ancaois.me/notes/404

    Currently "Go home" in page 404 is linked to https://memos.pub/. It should be linked to the hosted homepage, e.g. https://notes.ancaois.me in this case.

    opened by kcjpop 1
  • feat(blog): Support GitLab

    feat(blog): Support GitLab

    Some quick notes:

    Namespace:

    • https://github.com/gitlabhq/gitlabhq

    API:

    • https://docs.gitlab.com/ee/api/repository_files.html#get-file-from-repository
    • https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab/repository/files/README.md?ref=master
    • https://gitlab.com/api/v4/projects/gitlab-org%2Fgitlab/repository/tree

    Tests:

    • https://gitlab.com/gitlab-com/gl-infra/scalability/-/tree/master/doc
    • https://gitlab.com/gitlab-com/gl-infra/ci-runners/deployer
    • https://gitlab.com/gitlab-org/gitlab/-/tree/master/doc
    • https://gitlab.com/gitlab-org/gitaly
    • https://gitlab.com/gitlab-org/gitaly/-/blob/master/doc/sidechannel.md
    • https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/cicd/img/ci_architecture.png (has image)
    opened by thien-do 1
  • feat(github): Integrate with Keva Cloud

    feat(github): Integrate with Keva Cloud

    Hi @thien-do, please update env vars to integrate with Keva Cloud:

    UPSTASH_REDIS_REST_URL
    UPSTASH_REDIS_REST_TOKEN
    

    Please note that Keva Cloud is completely compatible with Redis and Upstash Redis client

    Log in to the cloud console at https://cloud.keva.dev/console

    image

    opened by tuhuynh27 0
  • feat(github): Use Github App

    feat(github): Use Github App

    Here something that memos.pub benefits from github app:

    • github app use its own api token

      A GitHub App acts on its own behalf, taking actions via the API directly using its own identity, which means you don't need to maintain a bot or service account as a separate user.

    • repo configuration become easy with single file permission

    • invalidated cached with webhook (github app can subscribe to repo's event)

    • increase visibility through github marketplace

    • still "without setup or sign up" since user's content already hosted on github, installing a github app is as easy as enabling github page

    links: about apps, permission, example, ko-fi

    opened by violeine 0
  • docs(blog): Add custom domain guide

    docs(blog): Add custom domain guide

    Memos.pub instantly makes a blog out of any public GitHub repo, with beautiful typography, MDX support, custom domain, and more.

    Is there any guide to setting up a custom domain for now? I think it can be just simple as in Netlify, just point your domain CNAME record to some-blog.memos.pub.

    Also, the 404 error happened on the org link:

    https://keva-dev.memos.pub/blog

    image

    Not sure if this is a bug or an expected behavior

    opened by tuhuynh27 1
  • feat(blog): Custom style for pages

    feat(blog): Custom style for pages

    I think, to increase user adoption, we can support them in customizing their page's CSS styles.

    It could be done after #18 is implemented. We could either put the custom style inside the JSON file (a horrible approach) or let the user create their own memos.css something.

    Think about the Yahoo 360-era.

    Some example of a similar service with support for custom styles:

    • https://thoughts.page/webring
    • https://bearblog.dev/discover/
    opened by huytd 1
  • feat(blog): Support custom font size for readers

    feat(blog): Support custom font size for readers

    We should let user to increase/decrease the font size or spacing in FE & save the setting to local storage/cookies.

    Perhaps also letting repo owner to set default setting in their repo config?

    opened by jackblk 1
Releases(v3)
  • v3(May 15, 2022)

    Spotlight

    • #39 Open absolute links in new tab, by @tuhuynh27 from keva.dev

    Updates

    • 1178a9bc8a9c7d59966f655baadd3e6d343e57fd Pre-render member blogs so they are always fast even after new memos.pub releases
    • 1bb9e12404099ce74f651430dad8a3ea24bb1e12 Add option to hide the file list when a README exists (example: config, result), thanks @huydx
    • b66216fef562c446bf9cb4319bafe227097c5579 Show a subtle indicator when a routing takes longer than usual, thanks @monodyle, @ng-hai
    • 9a1ce76ba654ebd3cdf8fbb28a0945483e0a5789 Support client-side routing for relative links in markdown (example)
    • 1a9a94e192d75ee179a4e0a68084324eb2b566b5 Support "title" and "date" in Front Matter (example: source, result), thanks @unrealhoang

    For contributors:

    • 4f27c0e2db306eab60260b1d65fece8878128b16 Add bookmarks to member blogs (source, local, production)
    Source code(tar.gz)
    Source code(zip)
  • v2(May 8, 2022)

    Spotlight

    We're super happy to introduce blog.keva.dev, the latest blog on our platform. This is where the Keva team writes all things interesting about their excellent data store πŸŽ‰ We'd like to thank @tuhuynh27 for working with us on this.

    Updates

    This release puts the README of a folder/repo before its article list (c364ed5fd53c29364ec1076ca3eae91ec39f9d20), along with several minor tweaks to make listing better:

    • c364ed5fd53c29364ec1076ca3eae91ec39f9d20 Hide the README entry in article list since its content is shown already
    • c364ed5fd53c29364ec1076ca3eae91ec39f9d20 Hide folder or repo name if a README existed, since READMEs usually have better titles already
    • 180850584f604033c9fdf5202670ca33c3a61aec Disable the "#" link for the first heading, since it usually works as the page's title
    • 0db791c785ec3a8a97e1b6883e556f215ab258d6 Hide the "This folder is empty" message if a README existed

    This release also removes experimental support for GitLab (https://github.com/thien-do/memos.pub/issues/17, 5492a516b989a5b46e0e44c914fe279edf7843af). Thank to the generous help from @nguyenquangminh0711, we had some initial success in supporting both GitHub and GitLab as sources. However, with our focus on Customisation in the foreseeable future, we decided to remove GitLab integration to simplify our architecture (8eb01411d9fb5ee0d06c70f4edfe96cf4a310f18) and expedite other areas. We hope to resume our work here when we have suitable resource.

    Source code(tar.gz)
    Source code(zip)
  • v1(May 3, 2022)

    Changes

    Details

    • Changes on authors' GitHub now take 1 minute at most to reflect on memos.pub (or their own custom domain, if the author has). Previously this took 5 minutes (which is why we had a hidden manual revalidation endpoint, which is no longer necessary).
    • New memos.pub releases now no longer invalidate content caches, which means authors' blogs are always as fast as static assets.
    • Memos.pub is now a good API citizen of GitHub REST API.
    Source code(tar.gz)
    Source code(zip)
Gatsby-starter-minimal-blog - Typography driven, feature-rich blogging theme with minimal aesthetics.

Gatsby-starter-minimal-blog - Typography driven, feature-rich blogging theme with minimal aesthetics. Includes tags/categories support and extensive features for code blocks such as live preview, line numbers, and line highlighting.

Priya Chakraborty 0 Jan 29, 2022
Blogkit - A unified blogging engine built with Next.js

Blogkit (beta) Blogkit is a unified blog engine inspired by Sairin. Get started with starter templates Template Description blogkit-notion-starter Not

2nthony 7 Jun 9, 2022
A tiny, fast and fun static site generator for quick blogging

1POST A tiny, fast and fun static site generator for quick blogging. 1POST is written entirely in NodeJS and has no dependencies. You can install as a

Felippe Regazio 141 Dec 5, 2022
A Technical Blogging Website that utilizes Notion as a CMS for ease of modification with the help of the notion-API & whose content has been rendered with next-js and react-notion-x

GDSC MCE Blogs This repo is what GDSC MCE uses to power their blogging website gdsc-mce-blogs. It uses Notion as a CMS, fetching content from Notion a

null 7 Dec 16, 2022
LogTure - A minimal designed, fully customizable, and extensible modern personal blogging framework, built with Nextjs.

LogTure - A minimal designed, fully customizable, and extensible modern personal blogging framework, built with Nextjs.

Sam Zhang 14 Aug 26, 2022
Learn GraphQL by building a blogging engine. Create resolvers, write schemas, write queries, design the database, test and also deploy.

GraphQL Blog graphqlblog.com Learn GraphQL by building a blogging engine. Create resolvers, write schemas, write queries, design the database, test an

GraphQLApps 6 Aug 17, 2022
A plugin for the Obsidian markdown note application, adding functionality to render markdown documents with multiple columns of text.

Multi-Column Markdown Take your boring markdown document and add some columns to it! With Multi Column Markdown rather than limiting your document lay

Cameron Robinson 91 Jan 2, 2023
A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that uses markdown-it.

markdown-it-eleventy-img A markdown-it plugin that process images through the eleventy-img plugin. Can be used in any projects that use markdown-it. F

null 25 Dec 20, 2022
An obsidian plugin for uploading local images embedded in markdown to remote store and export markdown for publishing to static site.

Obsidian Publish This plugin cloud upload all local images embedded in markdown to specified remote image store (support imgur only, currently) and ex

Addo.Zhang 7 Dec 13, 2022
Markdown Transformer. Transform markdown files to different formats

Mdtx Inspired by generative programming and weed :). So I was learning Elm language at home usually in the evening and now I am missing all this gener

Aexol 13 Jan 2, 2023
Calculating Pi number without limitation until 10k digits or more in your browser powered by JS without any third party library!

PI Calculator Web JS (Online) Calculating Pi number without limitation until 10k digits or more in your browser powered by JS without any third party

Max Base 6 Jul 27, 2022
A simple Node.js code to get unlimited instagram public pictures by every user without api, without credentials.

Instagram Without APIs Instagram Scraping in August 2022, no credentials required This is a Node.js library, are you looking for the same in PHP? go t

Francesco Orsi 28 Dec 29, 2022
Setup-graalvm - GitHub Action for setting up GraalVM CE.

GitHub Action for GraalVM This GitHub action sets up GraalVM Community Edition and GraalVM components such as Native Image and GraalVM languages. Key

GraalVM 105 Jan 2, 2023
Dev Guide for Archival Node & Indexer Setup

Algorand - The Undocumented Docs Dev Notes for Archival Node, Indexer Setup (and more) Archival Node FAQ [ ? ] How much space will I need? See -> http

null 5 May 23, 2022
Projen project type for Turborepo monorepo setup.

?? projen-turborepo Projen project type for Turborepo monorepo setup. Getting Started To create a new project, run the following command and follow th

Roman 23 Oct 4, 2022
Quickly create an anchor program from templates and setup anchor dev environment.

Create Anchor App Quickly create an anchor program from templates and setup anchor dev environment. Example Installation npm i -g @create-anchor-app/c

null 24 Nov 28, 2022
This GitHub Action will setup a Nushell environment for you.

setup-nu δΈ­ζ–‡θ―΄ζ˜Ž This GitHub Action will setup a Nushell environment for you. Usage Examples In most cases you need to specify the version of Nushell to

Justin Ma 15 Dec 30, 2022
⚑️ Free, open-source and easy to setup tempmail written in Node.JS!

tempmail-js ⚑️ Free, open-source and easy to setup tempmail written in Node.JS! tempmail.js uses MongoDB to store it's data. Installation Installing t

vida 2 Nov 7, 2022
⛺️ Tipi is a homeserver for everyone! One command setup, one click installs for your favorites self-hosted apps. ✨

⛺️ Tipi β€” A personal homeserver for everyone ⚠️ Tipi is still at an early stage of development and issues are to be expected. Feel free to open an iss

Nicolas Meienberger 4.9k Jan 4, 2023