GithubHelp home page GithubHelp logo

skyline96 / keypress Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zernonia/keypress

0.0 0.0 0.0 1.9 MB

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

Home Page: https://keypress.blog

License: MIT License

Shell 0.36% TypeScript 39.63% CSS 3.53% Vue 56.49%

keypress's Introduction


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.

keypress's People

Contributors

zernonia avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.