AstroBlog

Astroflix — Astro Blog Template

By yunho-c

Astroflix is an Astro-based blog template ported from the Jekflix theme. It supports Markdown or Notion as a content source and builds static blog sites.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-12View source

What stands out

A quick read of the recorded project description.

01

Astro blog template ported from the Jekflix theme, offering a cinematic, Netflix-style visual direction

02

Content source can be switched between local Markdown and a Notion database read at build time

03

Public configuration is centralized in src/data/site.ts, including site identity, navigation, social links, theme colors, and footer credits

04

Built-in featured homepage, article grid, article pages, reading progress, search, and author/tag/category archives

05

Generates RSS, sitemap, robots metadata, and a 404 page

06

Provides commands such as bun test, bun run check, bun run build, and dependency auditing

Template Details

Astroflix is an Astro port of the Jekflix theme, positioned as a cinematic, Netflix-style blog/publication template. It uses Astro to build static sites, and content can come from local Markdown files or be read from a Notion database at build time. The site includes a featured homepage, article grid, article detail pages, reading progress, search, author/tag/category archives, RSS, sitemap, robots metadata, and a 404 page. Public configuration is centralized in src/data/site.ts, covering site identity, navigation, social links, theme colors, footer credits, and contact details, and is validated when Astro loads.

The content source is switched via the CONTENT_SOURCE environment variable: Markdown is the default, with posts in src/content/posts/, authors in src/content/authors/, and About and Contact copy in src/content/pages/; Notion mode requires NOTION_TOKEN and NOTION_DATABASE_ID, and requires the database to have properties such as Title, Slug, Status, Published At, Author, and Category. Only articles with Status set to Published are built. The build rejects unknown authors, duplicate article routes, and category tags that would produce empty slugs or URL conflicts.

The template's default Contact page only displays the configured email and social links and does not render a form; to enable a form, point site.contact.formAction to an HTTPS form service endpoint or a root-relative server endpoint. The form submits via POST, and email handling is the responsibility of the external service. The canonical URL checked into the repository is an example address and cannot be used directly for production deployment. When deploying to Cloudflare Pages, it is recommended to use a separate repository, with the build command bun run build, the output directory dist, and the BUN_VERSION environment variable set.

AstroBlog

Is it right for your project?

Use Cases

  • Building a static blog or publication site focused on articles
  • Wanting to manage articles with Markdown files while keeping content separate from routing code
  • Wanting to use a Notion database as the content source and generate static pages at build time
  • Needing basic blog features such as a featured homepage, article archives, search, RSS, and sitemap
  • Planning to deploy the site to Cloudflare Pages while keeping the template as an upstream remote repository

Suitable For

  • Developers familiar with Astro and command-line build workflows
  • Blog or publication projects that need a cinematic, editorial visual style
  • Teams willing to configure external services such as domains, hosting, and form services themselves
  • Those who accept a static site approach using Markdown or Notion as the content source

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Requires Bun 1.3.14 and Node.js 22.12.0 or newer

  2. 2

    When using the Notion content source, you need to create an integration, share the database, and set NOTION_TOKEN and NOTION_DATABASE_ID

  3. 3

    Before publishing, modify the example canonical URL, site identity, navigation, social links, and theme colors in src/data/site.ts, and replace the demo articles, authors, About/Contact copy, and favicon

  4. 4

    The canonical URL checked into the repository is https://astroflix.example.com and cannot be used directly for production deployment

  5. 5

    When deploying to Cloudflare Pages, it is recommended to use a separate repository, with the build command bun run build, the output directory dist, and BUN_VERSION=1.3.14 set

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of that version and does not mean external services or third-party assets are free.

Must comply with when using

  • You are allowed to use, modify, commercially use, and distribute the code of this version for free.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • A Notion integration and shared article database are required only when using the Notion content source, which is an optional external service dependency.
  • Notion mode requires the three environment variables CONTENT_SOURCE, NOTION_TOKEN, and NOTION_DATABASE_ID to be configured, otherwise the build cannot proceed.
  • The Notion database must be shared with the integration holding NOTION_TOKEN, otherwise the build cannot read the content.
  • In the Notion content source, only articles with Status set to Published are built; articles with other statuses do not generate pages.
  • Enabling the contact form requires configuring an HTTPS form service endpoint or a root-relative server endpoint yourself; the template itself does not handle email.
  • The project does not handle email sending; redirects, anti-spam, and delivery must all be configured by an external form service provider.
  • When deploying to Cloudflare Pages, use a separate repository rather than deploying the template repository directly.
  • The canonical URL built into the repository is an example address and cannot be used directly for production deployment; it must be replaced before publishing.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

A Notion integration shared with the posts database only when using Notion content

Original README

Set all three variables for Notion builds:

Original README

The database must be shared with the integration that owns `NOTION_TOKEN`.

Original README

Only `Published` posts build

Original README

To enable a form, set `site.contact.formAction` to an HTTPS form-provider endpoint or a root-relative server endpoint.

Original README

This static project does not process email itself. Configure redirects, spam controls, and delivery with the provider.

Original README

use a separate repository rather than deploying this template repository directly.

Original README

The checked-in URL is deliberately `https://astroflix.example.com`; it is not suitable for a production deployment.

Original README
https://github.com/yunho-c/Astroflix/blob/main/LICENSEhttps://github.com/yunho-c/Astroflix/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-12. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
Partly documented · 72 / 100
Technologies
Astro
Website type
Blog
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-07-20
Screenshot last checked
2026-10-12

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-13

Inspect the recorded source material

SHA-256: 481e7488c78329cc377da640b560c99058af104254e6e5c5ad9e738500403db1

2026-10-12T23:46:01.555Z

Source file / repository
# Astroflix

A reusable Astro template for a cinematic, Netflix-inspired publication. It combines typed content, static routes, accessible browsing, and a small amount of intentional client JavaScript while preserving the product spirit of the original Jekflix theme.

## Start a publication

Requirements:

- Bun 1.3.14
- Node.js 22.12.0 or newer
- A Notion integration shared with the posts database only when using Notion content

Install and run the Markdown demo:

```sh
bun install
bun run dev
```

Before publishing a site created from this template:

1. Edit `src/data/site.ts`: replace the example canonical URL, site identity, navigation, social links, theme colors, and optional contact settings.
2. Replace the demo posts, authors, About/Contact Markdown, and favicon.
3. Choose Markdown or Notion with `CONTENT_SOURCE`.
4. Run `bun test`, `bun run check`, and `bun run build`.
5. Review the attribution setting and retain required source notices.

The checked-in URL is deliberately `https://astroflix.example.com`; it is not suitable for a production deployment.

## Commands

| Command | Action |
| :-- | :-- |
| `bun install` | Install the pinned dependency graph |
| `bun run dev` | Start the Astro development server |
| `bun test` | Run configuration and content integrity tests |
| `bun run check` | Run Astro and TypeScript diagnostics |
| `bun run content:sync` | Force-refresh the selected content source and generated Astro types |
| `bun run build` | Check and build production output to `dist/` |
| `bun run audit` | Fail on moderate-or-higher dependency advisories |
| `bun run preview` | Preview the production build locally |

## Public configuration

`src/data/site.ts` is the single source-controlled configuration surface for public, non-secret settings. It is validated when Astro loads.

| Area | Settings |
| :-- | :-- |
| Identity | Name, title, description, canonical URL, and language |
| Theme | Accent and browser theme colors |
| Navigation | Header/sidebar and footer links |
| Social | Explicit URL, label, and icon (`github`, `rss`, `x`, `linkedin`, `website`, or `email`) |
| Header | Optional badge and call to action |
| Footer | Optional visible Jekflix attribution, enabled by default |
| Contact | Optional public email and optional form action |
| Content | Default cover URL used when Notion has no cover |

The canonical URL drives Astro, canonical tags, sharing URLs, RSS, sitemap, and `robots.txt`. Date formatting and font selection derive from the configured language.

Font links, font faces, and language-specific stacks remain in `src/data/fonts.ts` because they are a specialized design-system concern; their default language comes from the site configuration.

## Content sources

Posts can load from local Markdown or a Notion database at build time. Copy `.env.example` to `.env` to select a source locally. Environment variables select infrastructure and hold secrets; branding stays in the typed site configuration.

### Markdown

Markdown is the default:

```sh
CONTENT_SOURCE=markdown
```

Posts load from `src/content/posts/`. The filename becomes the route slug unless frontmatter provides an explicit lowercase ASCII `slug`.

Authors load from `src/content/authors/` in both content modes. About and Contact copy load from `src/content/pages/`, keeping downstream editorial changes separate from route code.

### Notion

Set all three variables for Notion builds:

```sh
CONTENT_SOURCE=notion
NOTION_TOKEN=
NOTION_DATABASE_ID=
```

The database must be shared with the integration that owns `NOTION_TOKEN`. Notion assets are downloaded to the gitignored `src/assets/notion/` cache.

Required database properties:

| Property | Type | Notes |
| :-- | :-- | :-- |
| `Title` | Title | Post title |
| `Slug` | Rich text | Lowercase ASCII route slug such as `cinematic-homepages` |
| `Subtitle` | Rich text | Falls back to description or title |
| `Description` | Rich text | Falls back to subtitle or title |
| `Status` | Status | Only `Published` posts build |
| `Published At` | Date | Public publication date |
| `Updated At` | Date | Optional modified date |
| `Author` | Select | Must match a local author ID |
| `Category` | Select | Category label |
| `Tags` | Multi-select | Tag labels |
| `Cover URL` | URL | Optional; falls back to the site configuration |
| `Cover Alt` | Rich text | Optional; falls back to the title |
| `Featured` | Checkbox | Homepage hero candidate |

Builds reject unknown authors, duplicate post routes, taxonomy labels that create empty slugs, and distinct taxonomy labels that collide at the same URL. Tags and categories support Unicode labels and Unicode-safe derived routes.

## Contact forms

The default Contact page shows configured email/social links and does not render a form. To enable a form, set `site.contact.formAction` to an HTTPS form-provider endpoint or a root-relative server endpoint. The form then submits with `POST`.

This static project does not process email itself. Configure redirects, spam controls, and delivery with the provider. `/message-sent/` is available as an optional redirect target but is not used to simulate a successful submission.

## Cloudflare Pages

For a publication created from this template, use a separate repository rather than deploying this template repository directly.

Recommended Pages settings:

| Setting | Value |
| :-- | :-- |
| Production branch | `main` |
| Build command | `bun run build` |
| Output directory | `dist` |
| Environment variable | `BUN_VERSION=1.3.14` |

For a Notion-backed site, set `CONTENT_SOURCE=notion`, store `NOTION_TOKEN` as an encrypted secret, and set `NOTION_DATABASE_ID` for every environment that builds content. Create a Cloudflare Pages deploy hook so publishing in Notion can trigger a rebuild without a Git commit.

Keep this repository as an `upstream` or `template` remote in the publication repo if you want to merge future template improvements deliberately.

## Project structure

```text
/
├── public/
├── src/
│   ├── components/
│   ├── content/{authors,pages,posts}/
│   ├── content-sources/
│   ├── data/
│   ├── layouts/
│   ├── lib/
│   ├── pages/
│   └── styles/
├── tests/
├── astro.config.ts
└── src/content.config.ts
```

The template includes a featured homepage, post grid, article pages, reading progress, deterministic recommendations, search, author/tag/category archives, RSS, sitemap, robots metadata, 404, and optional form-confirmation routes. The footer uses static Astro icon components and adds no client-side icon runtime.

## Security and licensing

CI uses a frozen lockfile and fails on moderate-or-higher dependency advisories. See [SECURITY.md](SECURITY.md) for the currently accepted low-severity development-server advisory.

Astroflix is MIT licensed. It is an independent reproduction informed by the original Jekflix product and visual ideas. See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for attribution and dependency notices.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.