AstroReact作品集博客

DevBlog — Astro 作品集模板

作者 devsebastian44

DevBlog 是一个基于 Astro 的技术博客与作品集模板,面向编程、网络安全、数据与 AI 主题,集成 Supabase 认证与互动功能。

看看你的网站会是什么样

浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。

3 个预览视图
桌面端首页1 / 3
桌面端截图首屏预览

由服务器浏览器实际访问页面后截取。

全部页面与视图 3

截图用于了解视觉与布局,交互效果请以实际项目为准。

采集于 2026-10-05查看来源

值得关注的模板亮点

从已有项目资料中,快速了解它的特点。

01

Astro 混合渲染:文章页静态生成,动态路由服务端渲染

02

Supabase 认证:注册、登录与持久会话

03

访客互动:无需注册即可点赞、收藏和评论,状态保存在 localStorage

04

文章侧边栏实时显示点赞、评论与书签计数

05

Prisma 管理 PostgreSQL 模式,并启用行级安全策略(RLS)

06

内置 ESLint、Prettier、TypeScript 类型检查与 Playwright 测试脚本

模板详细介绍

DevBlog 是一个以 Astro 构建的技术内容平台模板,主题覆盖编程、网络安全、数据科学与人工智能。它采用混合渲染模式:文章页面在构建时静态生成,而个人资料与用户活动等动态路由通过服务端渲染提供。

模板内置基于 Supabase 的完整用户认证流程(注册、登录、持久会话),并支持访客在不注册的情况下通过 localStorage 记录点赞、收藏和评论。文章侧边栏显示点赞、评论与书签的实时计数。数据库使用 PostgreSQL,通过 Prisma ORM 管理迁移与类型,并启用行级安全策略(RLS)限制用户只能访问自己的数据。

样式方面使用 Tailwind CSS 与排版插件,采用暗色玻璃拟态设计,字体为 Aldrich。项目包含 ESLint、Prettier、TypeScript 类型检查与 Playwright 端到端测试脚本,并提供 Docker 相关配置。

使用该模板需要自行准备 Supabase 项目并配置环境变量,数据库表结构需通过 Prisma 应用。演示图片、字体等第三方素材的许可需单独核对。

AstroReact作品集博客

适合你的项目吗?

适用场景

  • 搭建以编程、网络安全、数据或 AI 为主题的技术博客
  • 创建带用户认证与互动功能的个人作品集站点
  • 需要访客无需注册即可参与点赞、收藏与评论的内容平台
  • 使用 Astro 与 Supabase 组合进行全栈项目实践

适合人群

  • 熟悉 Astro 与 TypeScript 的前端开发者
  • 需要集成 Supabase 认证与数据库的博客作者
  • 希望以 MIT 许可代码为基础进行二次开发的团队
  • 计划部署到 Vercel 并自行管理环境变量的用户

上手与定制指南

结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。

  1. 1

    需要 Node.js(版本由 .nvmrc 指定)与 npm

  2. 2

    需创建 Supabase 项目并获取 URL 与 anon key

  3. 3

    复制 .env.example 为 .env 并填写 PUBLIC_SUPABASE_URL 与 PUBLIC_SUPABASE_ANON_KEY

  4. 4

    通过 npx prisma db push 或 npx prisma migrate deploy 应用数据库模式

  5. 5

    部署到 Vercel 时需在项目设置中添加相同的环境变量

查看仓库使用说明

授权与来源资料

使用条件与限制

免费使用 · 保留许可声明

本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。

使用时需要遵守

  • 允许免费使用、修改、商用和分发该版本代码。
  • 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
  • 代码按现状提供;担保与责任限制以原许可证及适用法律为准。

额外费用与待核对事项

  • 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
  • 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
  • README 声明本项目仅用于教育和合乎道德的网络安全目的,属于项目特定的用途限制。
  • 使用模板需要自行拥有 Supabase 账户并创建项目,属于外部服务账户要求。
  • 运行模板必须配置 Supabase 的 URL 与 anon key 环境变量,属于外部服务凭据要求。
  • 部署流程依赖 Vercel 外部平台账户,属于外部服务要求。
查看原文依据

Permission is hereby granted, free of charge

许可证原文

⚠️ **Disclaimer:** This project is for educational and ethical cybersecurity purposes only.

README 原文

Una cuenta en **Supabase** con un proyecto creado y las tablas del esquema aplicadas mediante Prisma

README 原文

PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co PUBLIC_SUPABASE_ANON_KEY=tu_anon_key

README 原文

1. Conecta el repositorio a un proyecto en [Vercel](https://vercel.com).

README 原文
https://github.com/devsebastian44/DevBlog/blob/main/LICENSEhttps://github.com/devsebastian44/DevBlog/blob/main/README.md

DeepSeek 根据仓库许可证和 README 整理 ·2026-10-05。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。

项目核对记录与介绍依据

模板资料

来源平台
Astro Themes
资料与维护参考分
资料较完整 · 88 / 100
技术栈
Astro · React
网站类型
作品集 · 博客
这个分数如何计算

本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。

这个项目需要核对什么

记录的仓库更新时间
2026-04-27
截图检查日期
2026-10-05

已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。

目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。

查看具体选型方法 →

介绍的制作与核对状态

介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。

审核声明: [email protected] · 2026-10-05

查看当时使用的来源资料

SHA-256: 84e46c87952138d2852291258ed3bf9a58ab4398f73fb7add2903365c8f79e3b

2026-10-05T01:18:29.289Z

来源文件 / 仓库
# 📝 DevBlog

![Astro](https://img.shields.io/badge/Astro-6.x-BC52EE?style=flat&logo=astro&logoColor=white)
![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat&logo=typescript&logoColor=white)
![Supabase](https://img.shields.io/badge/Supabase-BaaS-3ECF8E?style=flat&logo=supabase&logoColor=white)
![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4.x-38B2AC?style=flat&logo=tailwindcss&logoColor=white)
![Vercel](https://img.shields.io/badge/Deploy-Vercel-black?style=flat&logo=vercel&logoColor=white)
![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-CI%2FCD-2088FF?style=flat&logo=github-actions&logoColor=white)
![License](https://img.shields.io/badge/License-MIT-green?style=flat&logo=opensourceinitiative&logoColor=white)

> 🌐 **Live:** [devblog44.vercel.app](https://devblog44.vercel.app)
>
> ⚠️ **Disclaimer:** This project is for educational and ethical cybersecurity purposes only.

---

## 🧠 Overview

**DevBlog** es una plataforma de contenido técnico de alto rendimiento construida
con **Astro 6** en modo híbrido (SSR + SSG), orientada a publicaciones sobre
programación, ciberseguridad, ciencia de datos e inteligencia artificial. Combina
la generación estática de contenido para máxima velocidad y SEO con capas dinámicas
de interacción en tiempo real respaldadas por **Supabase** como Backend-as-a-Service.

El proyecto integra un sistema completo de autenticación de usuarios (registro,
login, sesión persistente), interacciones sociales anónimas para visitantes sin
cuenta (likes, marcadores, comentarios vía `localStorage`), y un sistema de
actividad personalizada por usuario. La base de datos PostgreSQL de Supabase se
gestiona con **Prisma ORM** para migraciones y tipado del esquema, mientras que
las políticas **RLS (Row-Level Security)** garantizan que cada usuario solo acceda
y modifique sus propios datos.

El stack de desarrollo incluye tipado estricto con **TypeScript 5**, linting con
**ESLint** configurado para Astro y TypeScript, formateo con **Prettier**, y tests
E2E con **Playwright**. El proyecto sigue una arquitectura moderna centrada en
**GitHub** como repositorio principal y fuente de verdad.

---

## ⚙️ Features

- **Renderizado híbrido SSR + SSG** con Astro 6 y Vite: las páginas de artículos
  se generan estáticamente en build time para máxima velocidad, mientras que las
  rutas dinámicas (perfil, actividad) se sirven con SSR.
- **Sistema de autenticación completo** vía Supabase Auth: registro con email,
  login seguro, gestión de sesión persistente y página de actividad personalizada
  por usuario autenticado.
- **Interacciones para usuarios invitados** — Visitantes sin cuenta pueden dar
  likes, guardar favoritos y escribir comentarios, con estado rastreado localmente
  vía `localStorage` sin necesidad de registro.
- **Panel lateral interactivo por artículo** con contadores en tiempo real de
  likes, comentarios y marcadores, actualizado mediante el SDK de Supabase en
  el cliente.
- **Danger Zone — eliminación de cuenta** con flujo anti-caché implementado
  mediante funciones RPC personalizadas en Supabase para garantizar borrado
  completo y seguro de todos los datos del usuario.
- **Políticas RLS (Row-Level Security)** en PostgreSQL que aseguran a nivel de
  base de datos que cada usuario solo puede leer y modificar sus propios registros,
  sin depender únicamente de validaciones del lado del cliente.
- **Gestión del esquema con Prisma ORM** en la carpeta `prisma/`, permitiendo
  migraciones versionadas y tipado automático de las entidades de la base de datos.
- **Diseño premium futurista** con estética dark, glassmorphism, transiciones
  suaves, tipografía Aldrich y sistema de diseño construido sobre Tailwind CSS 4
  con el plugin `@tailwindcss/typography` para renderizado de contenido Markdown.
- **Tests E2E con Playwright** (`@playwright/test`) configurados como dependencia
  de desarrollo para validar flujos críticos de usuario.
- **Pipeline de calidad completo** con scripts `lint`, `lint:fix`, `format`,
  `format:check` y `type-check` ejecutables desde `package.json`.
- **Docker-ready** con `.dockerignore` configurado para containerización del
  entorno de producción.
- **Contenido temático** cubriendo programación, ciberseguridad, ciencia de
  datos e inteligencia artificial.

---

## 🛠️ Tech Stack

| Categoría         | Tecnología                         | Versión |
| ----------------- | ---------------------------------- | ------- |
| Framework web     | Astro (SSR/SSG híbrido)            | 6.1.3+  |
| Lenguaje          | TypeScript                         | 5.9+    |
| Estilos           | Tailwind CSS + Typography          | 4.x     |
| Build tool        | Vite (vía Astro)                   | —       |
| BaaS / Auth       | Supabase (PostgreSQL + Auth + RLS) | 2.93+   |
| ORM / Migraciones | Prisma                             | —       |
| Linting           | ESLint + @typescript-eslint        | —       |
| Formateo          | Prettier                           | —       |
| Type checking     | TypeScript `tsc --noEmit`          | —       |
| Tests E2E         | Playwright                         | 1.59+   |
| Despliegue        | Vercel                             | —       |
| Contenedor        | Docker (`.dockerignore`)           | —       |
| Node versioning   | `.nvmrc`                           | —       |
| Licencia          | MIT                                | —       |

---

## 📦 Installation

### Prerrequisitos

- **Node.js** (versión fijada en `.nvmrc`)
- **npm** actualizado
- Una cuenta en **Supabase** con un proyecto creado y las tablas del esquema
  aplicadas mediante Prisma

### 1. Clonar el repositorio

```bash
git clone https://github.com/devsebastian44/DevBlog.git
cd DevBlog
```

### 2. Usar la versión correcta de Node

```bash
nvm use
```

### 3. Instalar dependencias

```bash
npm install
```

### 4. Configurar variables de entorno

Copia el archivo de ejemplo y completa tus credenciales de Supabase:

```bash
cp .env.example .env
```

```env
# .env — nunca incluir en el repositorio
PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co
PUBLIC_SUPABASE_ANON_KEY=tu_anon_key
```

### 5. Aplicar el esquema de base de datos (Prisma)

```bash
# Para entorno de desarrollo
npx prisma db push
# o para entornos de producción
npx prisma migrate deploy
```

---

## ▶️ Usage

### Servidor de desarrollo

```bash
npm run dev
```

Abre [http://localhost:4321](http://localhost:4321) en tu navegador.

> El puerto por defecto de Astro es `4321`.

### Build de producción

```bash
npm run build
npm run preview   # Previsualizar el build localmente
```

### Comandos de calidad de código

```bash
# Verificar errores de linting
npm run lint

# Corregir errores de linting automáticamente
npm run lint:fix

# Formatear todos los archivos
npm run format

# Verificar formato sin modificar
npm run format:check

# Verificar tipos TypeScript
npm run type-check
```

### Tests

El proyecto utiliza **Playwright** para pruebas E2E. Los tests están configurados para ejecutarse de forma aislada.

```bash
# Ejecutar todos los tests
npm test

# Ejecutar tests con UI interactiva
npx playwright test --ui
```

### Despliegue en Vercel

1. Conecta el repositorio a un proyecto en [Vercel](https://vercel.com).
2. Añade las variables de entorno en `Settings → Environment Variables`:
   - `PUBLIC_SUPABASE_URL`
   - `PUBLIC_SUPABASE_ANON_KEY`
3. Vercel detecta automáticamente Astro y configura el build (`astro build`).
4. Redespliega tras cualquier cambio en las variables de entorno.

---

## 📁 Project Structure

```
DevBlog/
│
├── src/                          # Código fuente principal de la aplicación
│   ├── pages/                    # Rutas de Astro (SSR + SSG)
│   │   ├── index.astro           # Página de inicio / listado de posts
│   │   ├── blog/
│   │   │   └── [slug].astro      # Página dinámica de artículo individual
│   │   ├── auth/                 # Rutas de autenticación (login, registro)
│   │   ├── profile/              # Perfil y página "Mi Actividad"
│   │   └── api/                  # Endpoints de Astro (server-side)
│   ├── components/               # Componentes reutilizables de Astro/TS
│   │   ├── blog/                 # Componentes específicos de artículos
│   │   │   └── PostSidebar.astro # Panel lateral con likes, comentarios, bookmarks
│   │   ├── auth/                 # Formularios de login y registro
│   │   └── ui/                   # Componentes de UI genéricos (glassmorphism)
│   ├── layouts/                  # Layouts base de la aplicación
│   ├── lib/
│   │   └── supabase.ts           # Inicialización y cliente de Supabase JS SDK
│   └── styles/                   # Estilos globales CSS
│
├── prisma/                       # ORM y esquema de base de datos
│   └── schema.prisma             # Definición de modelos y relaciones PostgreSQL
│
├── public/                       # Assets estáticos (imágenes, favicon, fonts)
│
├── docs/                         # Documentación del proyecto
│   └── Logo.png                  # Logo oficial de DevBlog
│
├── diagrams/                     # Diagramas de arquitectura técnica
│
├── .vscode/                      # Configuración de editor recomendada
│
├── .dockerignore                 # Exclusiones para build de Docker
├── .editorconfig                 # Configuración consistente entre editores
├── .env.example                  # Plantilla de variables de entorno
├── .eslintrc.json                # ESLint con @typescript-eslint strict
├── .gitattributes                # Normalización de line endings
├── .gitignore                    # Exclusiones de Git
├── .nvmrc                        # Versión de Node.js fijada
├── .prettierrc                   # Formato: singleQuote, semi, printWidth 80
├── astro.config.mjs              # Configuración de Astro + Tailwind vía Vite
├── tsconfig.json                 # Configuración del compilador TypeScript
├── package.json                  # Dependencias y scripts del proyecto
├── LICENSE                       # Licencia MIT
└── README.md                     # Documentación principal
```

---

## 🔐 Security

### Row-Level Security (RLS) en Supabase

Todas las tablas de interacción del usuario (likes, comentarios, marcadores,
datos de perfil) tienen políticas RLS activas en PostgreSQL que garantizan, a
nivel de base de datos, que un usuario autenticado solo pueda leer y modificar
sus propios registros. Esto proporciona una capa de seguridad independiente
de la lógica de cliente.

### Danger Zone y eliminación de cuenta

El flujo de eliminación de cuenta está implementado mediante **funciones RPC
personalizadas en Supabase** en lugar de llamadas directas de cliente, lo que
previene condiciones de carrera y garantiza el borrado completo y transaccional
de todos los datos asociados al usuario (posts, likes, comentarios, marcadores).

### Gestión de credenciales

Las credenciales de Supabase se gestionan exclusivamente mediante variables de
entorno (`.env`), excluidas del repositorio vía `.gitignore`. El archivo
`.env.example` documenta las variables requeridas sin exponer valores reales.
Las variables prefijadas con `PUBLIC_` se exponen al cliente de forma controlada
por Astro; ninguna clave de servicio con permisos elevados debe usarse con este
prefijo.

### Autenticación de usuarios invitados

Las interacciones de usuarios anónimos se rastrean exclusivamente en
`localStorage` del navegador, sin crear registros en la base de datos hasta
que el usuario opte por registrarse. Esto evita la acumulación de datos no
verificados en el backend.

### Linting y type safety

La configuración de ESLint incluye las reglas `@typescript-eslint/no-unused-vars`
como error y `@typescript-eslint/no-explicit-any` como advertencia, reforzando
la seguridad de tipos en toda la codebase. El script `type-check` ejecuta
`tsc --noEmit` para detectar errores de tipado sin emitir archivos.

---

## 🌐 Repository Architecture

Este proyecto está centralizado en **GitHub**, que actúa como la única fuente de verdad y entorno de desarrollo. Aquí se gestiona tanto el código fuente del frontend como las configuraciones de seguridad, base de datos y flujos de trabajo de automatización.

La arquitectura se beneficia de la integración continua para validaciones de calidad y despliegue automático hacia Vercel.

---

## 🤝 Contributing

¡Las contribuciones son bienvenidas! Para colaborar:

1. **Fork** el repositorio.
2. Crea una rama para tu mejora: `git checkout -b feature/nueva-funcionalidad`.
3. Realiza tus cambios siguiendo las [guías de estilo](docs/CONTRIBUTING.md).
4. Asegúrate de que los tests pasen: `npm test`.
5. Envía un **Pull Request**.

---

## 🚀 Roadmap

## 📄 License

Este proyecto está distribuido bajo la licencia **MIT**.

Puedes usar, copiar, modificar, fusionar, publicar, distribuir y sublicenciar
el software libremente, siempre que se incluya el aviso de copyright original.

Copyright © 2025 **Sebastián Zhunaula** (devsebastian44)

---

## 👨‍💻 Author

<table>
  <tr>
    <td align="center">
      <b>Sebastián Zhunaula</b><br/>
      <sub>Full-Stack Developer · Frontend Specialist · Content Creator</sub><br/><br/>
      <a href="https://github.com/devsebastian44">
        <img src="https://img.shields.io/badge/GitHub-devsebastian44-black?style=flat&logo=github" />
      </a>
      <br/>
      <a href="https://devblog44.vercel.app">
        <img src="https://img.shields.io/badge/Blog-devblog44.vercel.app-000?style=flat&logo=vercel" />
      </a>
    </td>
  </tr>
</table>

> Este proyecto forma parte de un portafolio de desarrollo web full-stack,
> demostrando integración moderna de Astro 6, Supabase, Tailwind CSS 4,
> TypeScript estricto y Prisma ORM en una plataforma de contenido técnico
> con autenticación completa, interacciones sociales en tiempo real y
> despliegue en producción sobre Vercel.
反馈内容错误

看看同类模板

对比同技术栈与用途的模板,找到更适合的视觉与内容结构。