Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/letterpad/letterpad
A publishing platform for creative people.
https://github.com/letterpad/letterpad
blogging-system cms graphql journalism nextjs react reactjs single-page-app tailwindcss
Last synced: 3 months ago
JSON representation
A publishing platform for creative people.
- Host: GitHub
- URL: https://github.com/letterpad/letterpad
- Owner: letterpad
- License: mit
- Created: 2017-02-13T19:10:53.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-04-14T00:23:10.000Z (7 months ago)
- Last Synced: 2024-04-14T01:08:09.528Z (7 months ago)
- Topics: blogging-system, cms, graphql, journalism, nextjs, react, reactjs, single-page-app, tailwindcss
- Language: TypeScript
- Homepage: https://letterpad.app
- Size: 30.4 MB
- Stars: 731
- Watchers: 10
- Forks: 84
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- jimsghstars - letterpad/letterpad - A publishing platform for creative people. (TypeScript)
README
## Table of Contents
- [Letterpad](#letterpad)
- [Features](#features)
- [Demo](#demo)
- [How to Install](#how-to-install)
- [Development](#development)
- [Production](#production)
- [Using Docker](#using-docker)
- [Configuration Options](#configuration-options)
- [URL and Port](#url-and-port)
- [Letterpad Admin](#letterpad-admin)
- [Letterpad Client](#letterpad-client)
- [Contribute](#contribute)# Letterpad
Letterpad is a comprehensive blog publishing engine that simplifies the process of managing and publishing content for your blog or website.
Admin Dashboard
---
Website
## Features
- **Fully Developed Admin Dashboard and Website**: Get started quickly with a ready-to-use admin dashboard and a customizable website.
- **Domain Mapping**: Easily map your custom domain to your Letterpad blog.
- **Inline Editing**: Edit your content directly on the website with inline editing capabilities.
- **Grid and List Layout**: Choose between grid and list layouts for displaying your content.
- **Customizable Brand Color**: Personalize your blog with a customizable brand color.
- **Database Options**: Use either MySQL or SQLite3 for your database.
- **Integrations**: Seamlessly integrate with Cloudinary and Unsplash for media management.
- **Multi-User Install**: Letterpad supports multi-user installations by default.
- **Creatives - Page Builder**: Create beautiful photostories, portfolios, photoblogs, and art/design showcases with the Creatives page builder.
- **Grammar Checker**: Integration with Grammarly ensures your content is free of grammatical errors.
- **SEO Optimization**: Built-in SEO features help boost your blog's visibility.
- **Server Rendered Blog**: Enjoy the benefits of a server-rendered blog for optimal performance.
- **Themes**: Choose from three themes and contribute your own designs.## Demo
Explore Letterpad's capabilities in action by visiting the [demo](https://demo.letterpad.app).
# How to Install
To set up Letterpad on your system, follow these steps:
1. Clone this project:
```sh
git clone [email protected]:letterpad/letterpad.git
```2. Change to the project directory:
```sh
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.
## Development
```sh
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
```## Production
```sh
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` to `apps/client/.env`. Your blog will not work without setting the CLIENT_ID in `apps/client/.env`. You can find the CLIENT_ID by logging into your admin dashboard and navigating to Settings > Keys.
### Using Docker
If you prefer using Docker for deployment, you can run Letterpad with the following command:
```sh
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.### Configuration Options
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** | |
| EMAIL | 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. |## URL and Port
By default, the admin panel runs on port 3000, and the client runs on port 3001.
- Admin: [http://localhost:3000/admin](http://localhost:3000/admin)
- Client: [http://localhost:3001](http://localhost:3001)## Letterpad Admin
For more information about configuring the admin panel, refer to this [folder](https://github.com/letterpad/letterpad/tree/master/apps/admin).
## Letterpad Client
The Letterpad client (public) app can be found inside `apps/client`.
Demo: [https://demo.letterpad.app](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`.
## Contribute
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](https://discord.gg/n89rCNnzRw) to connect with the community and stay updated on the project's development.