This project combines Elysia with Kysely for building a web application with a PostgreSQL database backend.
Before starting the project, ensure you have the following installed on your machine:
- Bun
- PostgreSQL
git clone https://github.com/yogyy/elsely.git elsely
cd elsely
bun install
Execute the following SQL commands to create the necessary table in your PostgreSQL database:
CREATE TYPE UserType AS ENUM ('user', 'developer', 'verified');
CREATE TABLE ely_userr(
id VARCHAR(100) PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
username VARCHAR(255) UNIQUE NOT NULL,
name VARCHAR(255) NOT NULL,
role "UserType" NOT NULL DEFAULT 'user'::"UserType",
is_active BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE OR REPLACE FUNCTION trigger_set_updated_at()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER set_updated_at
BEFORE UPDATE ON ely_user
FOR EACH ROW
EXECUTE PROCEDURE trigger_set_updated_at();
CREATE TABLE "ely_post" (
id VARCHAR(50) PRIMARY KEY,
content VARCHAR(255) NOT NULL,
author_id VARCHAR REFERENCES "ely_user"(id) ON DELETE CASCADE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TRIGGER set_updated_at_trigger
BEFORE UPDATE ON ely_post
FOR EACH ROW
EXECUTE FUNCTION public.trigger_set_updated_at();
Copy the sample .env file and update it with your database connection details:
cp .env.sample .env
Run the following command to generate TypeScript types for your database:
bun run db:type
Execute the following command to run the tests:
bun run test
Now you're ready to start developing your Elysia + Kysely project!