https://github.com/jhalmu/homesite
Homesite - for all
https://github.com/jhalmu/homesite
blog chat co-operation homepage image-gallery multi-tenant project-gallery rss security
Last synced: 3 days ago
JSON representation
Homesite - for all
- Host: GitHub
- URL: https://github.com/jhalmu/homesite
- Owner: jhalmu
- Created: 2025-11-13T21:02:31.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-03-11T20:25:28.000Z (4 months ago)
- Last Synced: 2026-03-12T01:28:01.459Z (4 months ago)
- Topics: blog, chat, co-operation, homepage, image-gallery, multi-tenant, project-gallery, rss, security
- Language: Elixir
- Homepage: https://orangedinos.de/
- Size: 8.43 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Homesite
A modern multi-user blog platform built with Phoenix LiveView and Elixir.
## Features
- **Blogging** - Markdown posts, tags, drafts, SEO optimization, read time estimates
- **Auth** - Password + magic links, invitation-only registration, Cloudflare Turnstile
- **Portfolio** - Project galleries with lightbox, social sharing
- **Feeds** - RSS/Atom/JSON output, external feed aggregation (Mastodon, Bluesky, YouTube, Reddit)
- **Chat** - Real-time IRC-style messaging
- **Search** - Full-text fuzzy search across posts, tags, FAQs (pg_trgm)
- **i18n** - English and Finnish with bilingual FAQ system
- **Admin** - Dashboard, user management (ban/suspend/delete), flower-based permissions
## Tech Stack
- **Phoenix 1.8** / **LiveView 1.1** / **Elixir 1.18**
- **PostgreSQL** / **Ecto 3.13**
- **Tailwind CSS v4** / **DaisyUI 5**
- **Oban** (background jobs) / **Swoosh** (email)
- **Playwright** (E2E testing) / **axe-core** (accessibility)
## Quick Start
```bash
# Setup and start
mix setup
mix phx.server
```
Visit http://localhost:4000
**Test login:** `user@example.com` / `testpassword123`
## Commands
```bash
mix test # Run tests (1705 tests)
mix test.all # Full suite (format + compile + test + credo)
mix format # Format code
mix credo --strict # Static analysis
mix sobelow # Security scanning
```
## Project Structure
```
lib/
homesite/ # Business logic (contexts)
accounts/ # Users, auth, invitations, permissions
content/ # Posts, tags
moderation/ # Bans, suspensions
faqs/ # Bilingual FAQ system
external_feeds/ # Feed aggregation
homesite_web/ # Web layer
live/ # LiveView modules
admin_live/ # Admin interfaces
components/ # UI components
plugs/ # Request processing
assets/css/tokens/ # Design system (spacing, typography)
priv/
dev_faqs/ # Developer documentation (markdown)
repo/seeds/ # Database seeds including FAQs
```
## Permission System
Two-tier access control:
| Level | Role | Flowers | Access |
|-------|------|---------|--------|
| User | user | - | Read/write own content |
| Admin L1 | admin | πΈ | View dashboard |
| Admin L2 | admin | πΈπΈ | Manage FAQs |
| Admin L3 | admin | πΈπΈπΈ | User management |
| Admin L4 | admin | πΈπΈπΈπΈ | Promote admins |
| Admin L5 | admin | πΈπΈπΈπΈπΈ | Full access |
## Documentation
- **[CLAUDE.md](CLAUDE.md)** - Project guidelines and commands
- **[AGENTS.md](AGENTS.md)** - Coding patterns and best practices
- **[DESIGN_SYSTEM_GUIDE.md](DESIGN_SYSTEM_GUIDE.md)** - CSS design tokens
- **[MEMO.md](MEMO.md)** - Session notes
- **/dev/faqs** - Developer FAQs (dev environment only)
- **/faq** - User FAQs (public)
## Testing
```bash
# Unit & integration tests
mix test # 1705 tests
# E2E tests with Playwright
mix test --include playwright
# Full pre-commit check
mix test.all
# Accessibility audit
npx playwright test --project=chromium accessibility
```
## Deployment
Docker-based deployment to VPS with Caddy reverse proxy.
```bash
# Production build
docker compose build app
docker compose up -d
```
See `COOLIFY_TAILSCALE_DEPLOYMENT.md` for recommended deployment approach.
## License
MIT
---
Built with Elixir and Phoenix