A publishing platform for creative people.
Letterpad is a comprehensive blog publishing engine that simplifies the process of managing and publishing content for your blog or website.
Admin Dashboard
Website
Explore Letterpad's capabilities in action by visiting the demo.
To set up Letterpad on your system, follow these steps:
Clone this project:
git clone [email protected]:letterpad/letterpad.git
Change to the project directory:
cd letterpad
Before you proceed, ensure you've copied apps/admin/.env.sample
to apps/admin/.env
and set the SECRET_KEY
to a unique value.
bun install
bun run build
# Copy apps/admin/.env.sample to apps/admin/.env
# Change the secret key in .env file.
bun run seed
bun run dev
bun install
bun run build
# Copy apps/admin/.env.sample to apps/admin/.env
# Change the secret key in .env file.
bun run seed
bun run start
❗ Note: Copy
apps/client/.env.sample
toapps/client/.env
. Your blog will not work without setting the CLIENT_ID inapps/client/.env
. You can find the CLIENT_ID by logging into your admin dashboard and navigating to Settings > Keys.
If you prefer using Docker for deployment, you can run Letterpad with the following command:
docker run \
-v 'data:/app/apps/admin/prisma/sqlite/data' \
-p 3001:3001 \
-p 3000:3000 \
-e DATABASE_URL='file:data/letterpad.sqlite' \
-e SECRET_KEY='provide-a-secret-key' \
-e EMAIL="[email protected]" \
-e PASSWORD='xxxxxxxxxxx' \
abhisheksaha11/letterpad
IMPORTANT!!! - The client uses
apps/client/.env
to connect with the API. This file contains the CLIENT_TOKEN, which you can find by logging into your admin dashboard and navigating to Settings > Keys. If you've changed the SECRET_KEY, make sure to update the CLIENT_ID.
Letterpad can be configured using environment variables. Here are the available options: Here's the provided information converted into a table format:
Configuration Options | Description |
---|---|
User Configuration | |
The email of the first user. (Docker only) | |
PASSWORD | The password of the first user. (Docker only) |
Security Configuration | |
SECRET_KEY | A secret key used for encrypting passwords and emails. |
Database Configuration | |
DATABASE_URL | Database connection URL. You can use either SQLite or MySQL. |
Spam Protection | |
RECAPTCHA_KEY_CLIENT | Google reCAPTCHA client key. |
RECAPTCHA_KEY_SERVER | Google reCAPTCHA server key. |
Email Configuration | |
GMAIL_USER | Gmail email address. |
GMAIL_PASSWORD | Gmail password. |
SENDER_EMAIL | Email address for sending emails. |
Media Management Configuration (Cloudinary) | |
CLOUDINARY_KEY | Cloudinary API key. |
CLOUDINARY_NAME | Cloudinary cloud name. |
CLOUDINARY_SECRET | Cloudinary API secret. |
Unsplash Integration | |
UNSPLASH_CLIENT_ID | Unsplash client ID. |
Debugging | |
DEBUG | Enable debugging. |
By default, the admin panel runs on port 3000, and the client runs on port 3001.
For more information about configuring the admin panel, refer to this folder.
The Letterpad client (public) app can be found inside apps/client
.
Demo: https://demo.letterpad.app
Letterpad Admin provides a client key that can be found in settings. If you want to host the client on a different domain, set this client_key in apps/client/next.config.js
.
You are welcome to contribute to the project. If you encounter any bugs or have feature requests, please create an issue or submit a pull request. Feel free to join our Discord channel to connect with the community and stay updated on the project's development.