• Stars
    star
    240
  • Rank 168,229 (Top 4 %)
  • Language Vue
  • License
    MIT License
  • Created about 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

KeyPress - an open-source blogging platform + free custom domains.

KeyPress's Logo

A keyboard-first blogging platform.
Finally write your blog post only with keys ๐ŸŽน

View Demo ยท Report Bug ยท Request Feature


KeyPress - open-source blogging platform that focused on keyboard-first experience

Introduction

KeyPress is an open-source blogging platform that focused on keyboard-first experience. It was inspired by Vercel's Platform Starter Kit.

I always wanted to build a multi-tenant platform using Nuxt3, and I finally did it! - in nuxt-rc11.

If you are interested to implement the same, checkout

  1. server/middleware/subdomain.ts - check the current domain and set srr context.
  2. app/router.option.ts - based on the ssr context, map a new route.
  3. pages/user/[siteId] - this will now be your new router root

๐Ÿš€ Features

  • ๐Ÿคฉ Free
  • ๐Ÿ“– Open-Source
  • ๐Ÿš€ Free custom domain
  • ๐ŸŒŒ Auto OG image (using Satori)

๐Ÿ”จ Built With

๐ŸŒŽ Setup

Prerequisites

Yarn

  • npm install --global yarn

Development

  1. Clone the repo
    git clone https://github.com/zernonia/keypress.git
  2. Install NPM packages
    cd keypress
    yarn install
  3. Run local development instance
    yarn dev

Supabase Database

create table domains (
  user_id uuid,
  url text not null primary key,
  active boolean,
  created_at timestamp default now()
);

create table profiles (
  id uuid default uuid_generate_v4() primary key,
  username text,
  avatar_url text,
  name text,
  created_at timestamp default now(),
  subdomain text references domains (url)
);

create table posts (
  id uuid default uuid_generate_v4() primary key,
  author_id uuid references profiles (id),
  created_at timestamp default now(),
  slug text not null,
  title text,
  body text,
  cover_img text,
  active boolean,
  tags ARRAY,
  featured boolean not null
);


create or replace view tags_view as
  select *, count(*)
  from
    (select unnest(tags) as name from posts where active is true) s
  group by name;



create or replace function public.handle_new_user()
  returns trigger as $$
  begin
    insert into public.profiles (id, avatar_url, username, name)
    values (new.id, new.raw_user_meta_data->>'avatar_url', new.raw_user_meta_data->>'user_name', new.raw_user_meta_data->>'preferred_username');
    return new;
  end;
  $$ language plpgsql security definer;


create trigger on_auth_user_created
  after insert on auth.users
  for each row execute procedure public.handle_new_user();

โž• Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Acknowledgement

  1. Nuxt 3 - Awesome framework
  2. Supabase - Super easy setup (as always)
  3. Tiptap - Awesome editor
  4. Vercel's Platform Starter Kit - Subdomain/Custom domain
  5. Vercel's new og generation

Author

Also, if you like my work, please buy me a coffee โ˜•๐Ÿ˜ณ

Logo

๐Ÿ”ฅ Contributors

๐Ÿ“œ License

Distributed under the MIT License. See LICENSE for more information.

More Repositories

1

supabase-schema

Secured & Simple Supabase Schema Visualizer
Vue
804
star
2

vue0

Vue version open source alternative for v0.dev
Vue
701
star
3

tweetic

Convert Tweets to Static HTML
TypeScript
240
star
4

madewithsupabase

A collection of projects made with Supabase โ€“ Websites, Mobile Apps, SaaS, Plugins and more!
Vue
238
star
5

nuxt-lego

NuxtLego is an open source UI component layer for building your Nuxt content quick & beautiful.
Vue
231
star
6

vue3-notion

An unofficial Notion renderer (Vue 3) version
CSS
137
star
7

vista

Add animated subtitle to your video automatically
Vue
102
star
8

simple-log

SimpleLog - Event tracking all in 1 place! Free & Open Source
Vue
89
star
9

timelino

Twitter-liked platform without toxic and negativity
Vue
48
star
10

supadb

Connect and play with Supabase REST API / Graphql easily
Vue
45
star
11

supabase-realtime-playground

Vue
43
star
12

supabase-vue-3

Vue 3 + Supabase Starter
Vue
39
star
13

swappy-one

Vue
32
star
14

zernonia.com

My personal website! Enjoy ๐Ÿคฉ
Vue
26
star
15

supaembed

Embed custom tools on your website with your Supabase instance.
Vue
24
star
16

secret-diary

Vue
18
star
17

himaker

Embed & Showcase your projects on websites
CSS
17
star
18

supabase-cdn-transformation

HTML
14
star
19

supabase-vscode-extension

Unofficial Supabase Extension
TypeScript
14
star
20

supabase-form

Vue
7
star
21

radix-vue-slidev

Radix Vue talk on Vue Nation 2024
Vue
6
star
22

vue-supabase-slides

CSS
3
star
23

Dashboard-BI

Simple Drag-and-Drop Analytics Dashboard using Vanilla Javascript
JavaScript
3
star
24

nuxtjs-pinterest

Pinterest Clone using Nuxtjs
Vue
3
star
25

shopify-whatsapp

JavaScript
2
star
26

zernonia

2
star
27

nuxt3

Vue
2
star
28

devchallenges

CSS
2
star
29

bank-green-test

Vue
2
star
30

genshin-calendar

Vue
2
star
31

memory-lanes

Vue
2
star
32

nuxt3-app

Vue
1
star
33

work-dot

Vue
1
star
34

github-actions-for-ci

JavaScript
1
star
35

work-tableau-extension

JavaScript
1
star
36

sunlife-persistency

Vue
1
star
37

vue-electron-video-converter-trimmer

Vue
1
star
38

nuxt3-starter

TypeScript
1
star
39

radix-vue-tree

TypeScript
1
star
40

hello-github-actions

Dockerfile
1
star
41

coronatracker

Vue
1
star