A static site generator for RSS feeds, inspired by Brutalist Report aesthetics.
This project generates a static site from RSS feeds, resulting in a lightweight UI that loads quickly with minimal dependencies. The static site is generated when feed contents are updated.
- Static site generation from RSS feeds
- Brutalist aesthetic design
- OpenAI integration for content summarization
- Configurable feeds
- Fast loading times with minimal client-side dependencies
config/
- Configuration files for feedsstatic-generator/
- Code for generating the static siteservices/
- Service modules for RSS, content, and OpenAI integrationtemplates/
- EJS templates and CSS for the static site
.github/workflows/
- GitHub Actions workflows for deployment
Main dependencies:
cheerio
- HTML parsing and manipulationdotenv
- Environment variable managementejs
- Templating enginegot
- HTTP clientopenai
- OpenAI API clientreact
- UI component libraryrss-parser
- RSS feed parsingws
- WebSocket implementationzod
- Schema validation
Dev dependencies:
tsx
- TypeScript executiontypescript
- TypeScript language supportvite
- Build tool and development server
# Clone the repository
git clone [repository-url]
cd [repository-directory]
# Install dependencies
npm install
# Create .env file from example
cp .env.example .env
# Edit .env with your own values
Available npm commands:
# Start the development server
npm run dev
# Build the static site
npm run build
# Preview the built static site
npm run preview
The project uses environment variables for configuration. Create a .env
file in the root directory of the project (copy from .env.example
) and add your values:
# OpenAI API Configuration
OPENAI_API_KEY=your-openai-api-key-here
OPENAI_API_BASE_URL=http://your-custom-openai-endpoint:port/v1
OPENAI_MODEL_NAME=gpt-3.5-turbo
# Feed Configuration
MAX_ITEMS_PER_FEED=10
# Build Configuration
NODE_ENV=production
OPENAI_API_KEY=your-api-key
OPENAI_API_BASE_URL=http://your-custom-endpoint:port/v1 (optional)
OPENAI_MODEL_NAME=gpt-3.5-turbo (optional)
If OPENAI_API_BASE_URL
is not provided, the application will use the default OpenAI API endpoint.
MAX_ITEMS_PER_FEED=10 (optional, defaults to 10)
This variable controls how many items are fetched from each RSS feed.
The project uses GitHub Actions for automated deployment and other CI/CD tasks. The workflows are defined in the .github/workflows
directory.
The deployment workflow (.github/workflows/deploy.yml
) automates the process of building and deploying the static site:
- Triggers on pushes to the main branch
- Sets up Node.js environment
- Installs dependencies
- Fetches content from RSS feeds
- Builds the static site
- Deploys the built site to the hosting platform
The project can use Ollama as a drop-in replacement for the OpenAI API in GitHub Actions:
- Allows running AI operations locally on GitHub runners
- Provides format translation between OpenAI and Ollama APIs
- No code changes needed - works as a drop-in replacement
- Configurable to use different models
- Reduces dependency on external API services
- The static site generator fetches content from configured RSS feeds
- Content is processed and optionally summarized using OpenAI
- EJS templates are used to generate HTML pages
- The resulting static site is built in the
dist
directory - GitHub Actions can be used for automated deployment
MIT