Skip to content

GabrielTenma/apollo-bun

apollo

Simple scraper - economics news watcher
Release · Report Bug · Request Feature


Branches Last commit Release CI License Agent-friendly AGENTS.md

Overview

Just a simple project focusing on scrape data related with economics for who need answer to take decision into market, processed with multiple sources data and openrouter LLM for describe the market tension, I called this apollo.

How it works

Basically this app just collect data from trusted platform who updates related economic topic, wrap it up become one data and analyze with openrouter LLM autoselect free model, then send the result to social chat platform telegram for now.

Errors and structured events are logged via evlog — one wide event per failure with full context, no scattered lines.

For the future plan focusing integrate to stackyrd pkg which diameter-tscd project, frontend and manageable web-content.

Getting Started

Prerequisites

  • Bun (latest)
  • PostgreSQL database / Supabase
  • OpenRouter API key
  • Telegram bot token (from @BotFather)

Installation

# Clone the repository
git clone https://github.com/GabrielTenma/apollo-bun.git
cd apollo-bun

# Install dependencies
bun install

# Configure environment variables
cp .env.example .env
# Edit .env and fill in your credentials

Running

# Development — Vite frontend + Elysia backend in separate terminals
bun run dev              # Terminal 1: Elysia backend on :3000
bun run web:dev          # Terminal 2: Vite frontend on :3001

# Build frontend + start production server (serves frontend from :3000)
bun run web:build        # Build React app → dist/web/
bun run start            # Start Elysia server (serves API + frontend)

The Elysia server serves the React frontend from http://localhost:3000/ using Elysia's native file() helper. API routes are prefixed under /api/v1/, /telegram/, etc. CORS allows localhost:5173, localhost:3001, and localhost:3000.

Docker

Build and run with Docker. The image is based on oven/bun:1-distroless.

docker build -t apollo .
docker run -p 3000:3000 --env-file .env apollo

Environment variables are passed via --env-file or -e. The frontend is baked into the image at build time (served by Elysia file() from /).

Exposed port: 3000. Health check: GET /health{"status":"ok"}.

Preview

Web

For architecture details, see DESIGN.md.

License

Use Apache 2. See LICENSE for deal your free time.

About

Simple scraper - economics news aggregator & watcher (Bun version)

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors