New Project

Beam Internal Blog

A simple message board for your organization or project.

DeployView Demo
Beam Internal Blog
[Image blocked: No description]

Beam is a simple tool that allows members to write posts to share across your organization. Think of it like a lightweight internal blog. Features include a simple Markdown-based editor with preview, image drag and drop, comments and likes, search, a clean responsive layout with dark mode support, and an admin role for hiding posts.

[Image blocked: No description]

Setup

Install dependencies

npm install

Create a database

  • Create a PlanetScale database
  • Create a connection string to connect to your database. Choose Prisma for the format
  • Alternatively, your PlanetScale database and connection string can be generated using the pscale CLI or GitHub Actions. View instructions [blocked].
  • Set up the environment variables:
cp .env.example .env
  • Open .env and set the DATABASE_URL variable with the connection string from PlanetScale
  • Create the database schema:
npx prisma db push

Configure authentication

GitHub and Okta authentication settings are available as defaults, but thanks to NextAuth.js, you can configure your Beam instance with most other common authentication providers.

  • Configuring GitHub authentication [blocked]
  • Configuring Okta authentication [blocked]

Beam uses NextAuth.js, so if you prefer to use one of the many providers it supports, you can customize your own installation. Simply update the lib/auth.ts file to add your own provider.

Enable image uploads (optional)

To enable image uploads, set the environment variable NEXT_PUBLIC_ENABLE_IMAGE_UPLOAD to true.

Beam uses Cloudinary for storing uploaded images. You can sign up for a free account.

  • On your Cloudinary dashboard, look for these values under your account settings: Cloud Name, API Key, API Secret.
  • Update .env with the following variables:
    • CLOUDINARY_CLOUD_NAME: Cloud Name
    • CLOUDINARY_API_KEY: API Key
    • CLOUDINARY_API_SECRET: API Secret

Configure Slack notifications (optional)

If you'd like to have new Beam posts published to a Slack channel, follow these instructions [blocked].

Running the app locally

npm run dev

Open http://localhost:3000 in your browser.

Authenticating with GitHub

Deploying to Vercel

One-click deploy:

⚠️ Remember to update your callback URLs after deploying.

GitHub Repoplanetscale/beam
LicenseView License
Use Cases
Blog
Authentication
Stack
Next.js
Tailwind
Database
PlanetScale
Auth
NextAuth.js

Related Templates

Platforms Starter Kit

Next.js template for building multi-tenant applications with the App Router and Redis.
Platforms Starter Kit thumbnail
DeployView Demo