Skip to content

dvelton/daylight

Repository files navigation

Daylight

Git repos for everyone. Define a schema, get an app.

Daylight is a web application that reads a YAML schema from any GitHub repository and generates a workspace for non-developers — tables, kanban boards, document editors, and review workflows — all backed by git commits and pull requests.

Your team gets a real application. Your repo stays the source of truth.

Quick Start

1. Install and run

git clone https://github.com/dvelton/daylight.git
cd daylight
npm install
cp .env.example .env.local
# Fill in GITHUB_ID, GITHUB_SECRET, and NEXTAUTH_SECRET
npm run dev

To get GitHub OAuth credentials, create an OAuth App with callback URL http://localhost:3000/api/auth/callback/github.

Generate a NextAuth secret:

openssl rand -base64 32

2. Add a schema to your repo

Create .github/daylight.yml in any GitHub repo:

name: "Team Knowledge Base"

content_types:
  article:
    name: "Article"
    folder: "articles"
    format: "markdown"
    fields:
      title:
        type: "string"
        required: true
      status:
        type: "select"
        options: ["draft", "review", "published"]
        default: "draft"
      author:
        type: "string"

views:
  - id: "all-articles"
    name: "All Articles"
    type: "table"
    content_type: "article"
    columns: ["title", "status", "author"]

  - id: "article-board"
    name: "Article Board"
    type: "board"
    content_type: "article"
    group_by: "status"

workflows:
  - id: "article-review"
    content_type: "article"
    transitions:
      - from: "draft"
        to: "review"
        label: "Submit for Review"
        action: "pull_request"
      - from: "review"
        to: "published"
        label: "Approve & Publish"
        action: "merge"

3. Open Daylight and connect the repo

Navigate to http://localhost:3000, sign in with GitHub, select your repo, and your workspace appears.

How It Works

Content lives in your repo as markdown files with YAML frontmatter:

---
title: "Onboarding Guide"
status: "published"
author: "Jane"
---

# Onboarding Guide

Welcome to the team...

Daylight reads the schema to understand what's in the repo and how to present it. When users create or edit content through the UI, Daylight writes commits. When they submit content for review, Daylight creates pull requests. The repo is always the source of truth.

You do this in Daylight Git does this underneath
Save Commit to branch
Submit for Review Create pull request
Approve Merge pull request
View History Browse commit log

Schema Reference

Top-level fields

Field Type Required Description
name string yes Workspace display name
description string no Short description
content_types object yes Map of content type definitions
views array yes List of view configurations
workflows array no List of workflow definitions

Content types

Each key in content_types is the type ID (used in URLs and references).

Field Type Required Description
name string yes Display name
folder string yes Repo folder where files live
format string yes Always "markdown"
fields object yes Map of field definitions

Fields

Each key in fields is the field ID (used in frontmatter and columns).

Field Type Required Description
type string yes One of: string, text, number, boolean, date, select, list
required boolean no Whether the field must have a value
default varies no Default value for new items
options string[] select only Available options for select fields

Views

Field Type Required Description
id string yes Unique view ID (used in URLs)
name string yes Display name in sidebar
type string yes table, board, or calendar
content_type string yes Which content type to display

Additional fields by view type:

Table: columns (string array), default_sort (object with field and direction)

Board: group_by (string — must reference a select field)

Calendar: date_field (string — must reference a date field)

Workflows

Field Type Required Description
id string yes Unique workflow ID
content_type string yes Which content type this applies to
transitions array yes List of allowed state transitions

Each transition:

Field Type Required Description
from string or string[] yes Source status value(s)
to string yes Target status value
label string yes Button label in UI
action string yes pull_request, merge, or commit

Schema Gallery

The schemas/ directory includes ready-to-use schemas:

  • knowledge-base — Articles with draft/review/published workflow
  • project-tracker — Tasks with kanban board and priority views
  • policy-library — Organizational policies with approval workflows and category grouping

Copy any schema's .github/daylight.yml into your repo to get started.

Want to contribute a schema? Copy schemas/_template/, customize it, and open a PR. See CONTRIBUTING.md for details.

Tech Stack

  • Next.js (App Router)
  • TypeScript
  • Tailwind CSS
  • NextAuth.js (GitHub OAuth)
  • Octokit (GitHub API)
  • gray-matter (frontmatter parsing)

License

MIT

About

A schema-driven web app that turns any GitHub repo into a workspace for non-developers: tables, boards, editors, and review workflows, all backed by git.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors