Skip to content

bunizao/site

Repository files navigation

Site

Personal bio/portfolio website.

Live at:

buxx.me badge

Tech Stack

  • Astro
  • React
  • TypeScript
  • TailwindCSS

Dev

bun install
bun run dev

API Endpoints

JSON

GET /api/moods

Query params:

  • before (string, optional): pagination cursor (oldest mood id currently loaded).
Response shape
{
  "posts": [
    {
      "id": "12345",
      "datetime": "2025-01-01T12:34:56+00:00",
      "tag": "life",
      "previewText": "text preview",
      "previewHtml": "<p>text preview</p>",
      "image": "https://...",
      "mediaHtml": "<div>...</div>",
      "needsDetailPage": true,
      "forwardedFrom": { "name": "source", "href": "https://t.me/..." },
      "quote": { "text": "quoted text", "author": "someone", "href": "/mood/123" },
      "reactions": [
        { "emoji": "👍", "emojiId": "123", "emojiImage": "https://...", "count": "2", "isPaid": false }
      ]
    }
  ],
  "channel": {
    "slug": "my_channel",
    "title": "My Channel"
  }
}

Notifications (Email)

Documentation:

SVG

Documentation:

oEmbed

Documentation:

Image Quality Upgrade (Cloudflare Worker)

Mood photos can be served via a Cloudflare Worker for higher quality and edge caching.

Documentation:

Project Structure

.
├── src/                              # Application source code
│   ├── pages/                        # Astro routes and API endpoints
│   │   ├── index.astro               # Homepage
│   │   ├── mood.astro                # Mood feed page
│   │   ├── mood/[id].astro           # Mood detail page
│   │   ├── mood/embed.astro          # Embeddable widget page
│   │   ├── api/                      # JSON/SVG/oEmbed/webhook endpoints
│   │   └── static/                   # Static proxy/helper routes
│   ├── components/                   # Reusable Astro/React components
│   │   └── ui/                       # UI primitives
│   ├── layouts/                      # Shared layout wrappers
│   ├── lib/                          # Utilities and service integrations
│   │   ├── notify/                   # Email notify domain logic
│   │   └── security/                 # Turnstile and security helpers
│   └── styles/                       # Global styles and Tailwind layers
├── public/                           # Public static assets
│   └── fonts/                        # Font files
├── docs/                             # API and feature documentation
├── workers/                          # Cloudflare Worker projects
│   ├── notify-scheduler/             # Scheduled notify dispatcher
│   └── telegram-image-proxy/         # Telegram image proxy worker
├── scripts/                          # Maintenance/migration scripts
├── tests/                            # Automated tests
│   └── e2e/                          # Playwright e2e test cases
├── astro.config.mjs                  # Astro config and integrations
├── tailwind.config.mjs               # Tailwind theme/config
└── .env                              # Environment template with comments

Environment Variables

Variable descriptions are maintained as inline comments in .env.

Use .env.local for local secrets and keep .env as the documented template.

Acknowledgements

License

Copyright (c) 2026 bunizao. All rights reserved.

This repository is publicly visible for source inspection. No permission is granted to use, copy, modify, distribute, deploy, or commercialize this code without prior written approval from bunizao.

If you obtained an earlier version of this project under a different license, that version remains governed by the license terms that were included with that version.

Third-party components and assets remain subject to their own licenses.

See the LICENSE file for the full terms.

About

A personal bio and portfolio website

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors