Skip to content

Commit 2974035

Browse files
committed
Add sponsor badge
1 parent 7cedfc8 commit 2974035

1 file changed

Lines changed: 184 additions & 0 deletions

File tree

README.md

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-pink?logo=github)](https://github.com/sponsors/hyperpolymath)
2+
3+
= Branch Newspaper
4+
5+
image:https://img.shields.io/badge/License-PMPL--1.0-blue.svg[License: PMPL-1.0,link="https://github.com/hyperpolymath/palimpsest-license"]
6+
image:https://img.shields.io/badge/Philosophy-Palimpsest-indigo.svg[Palimpsest,link="https://github.com/hyperpolymath/palimpsest-license"]
7+
8+
9+
[![CI]()](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/ci.yml)
10+
[![Mirror Sync]()](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/mirror-sync.yml)
11+
[![CodeQL]()](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/codeql.yml)
12+
13+
A Phoenix LiveView application for citizen journalists and union branches with integration for decentralized content storage.
14+
15+
== Features
16+
17+
- *Meeting Minutes Management* - Create, edit, and organize meeting minutes
18+
- *IPFS Integration* - Store content on IPFS for decentralized, immutable storage
19+
- *Real-time UI* - Phoenix LiveView for instant updates without page reloads
20+
- *Tag Organization* - Categorize minutes with tags for easy discovery
21+
22+
== Tech Stack
23+
24+
| Component | Technology |
25+
|-----------|------------|
26+
| Language | Elixir ~> 1.15 |
27+
| Framework | Phoenix 1.8.1 |
28+
| Real-time | Phoenix LiveView 1.1.0 |
29+
| Database | SQLite3 (dev) / PostgreSQL (prod) |
30+
| Storage | IPFS (Kubo) |
31+
| CSS | Tailwind CSS v4 |
32+
33+
== Prerequisites
34+
35+
- Elixir 1.15+ and Erlang/OTP 25+
36+
- Node.js 18+ (for asset compilation)
37+
- IPFS node (Kubo) running locally or accessible
38+
39+
== Getting Started
40+
41+
=== Development Setup
42+
43+
1. *Clone the repository*
44+
```bash
45+
git clone https://github.com/hyperpolymath/branch-newspaper.git
46+
cd branch-newspaper
47+
```
48+
49+
2. *Install dependencies and setup database*
50+
```bash
51+
mix setup
52+
```
53+
54+
3. *Start the IPFS daemon* (in a separate terminal)
55+
```bash
56+
ipfs daemon
57+
```
58+
59+
4. *Start the Phoenix server*
60+
```bash
61+
mix phx.server
62+
# Or with interactive Elixir shell:
63+
iex -S mix phx.server
64+
```
65+
66+
5. *Visit the application*
67+
68+
Open [http://localhost:4000](http://localhost:4000) in your browser.
69+
70+
=== Running Tests
71+
72+
```bash
73+
= Run all tests
74+
75+
mix test
76+
77+
= Run with coverage
78+
79+
mix test --cover
80+
81+
= Run the precommit checks (format, compile warnings, tests)
82+
83+
mix precommit
84+
```
85+
86+
=== Code Quality
87+
88+
```bash
89+
= Check formatting
90+
91+
mix format --check-formatted
92+
93+
= Run all lint checks
94+
95+
./ci-scripts/lint.sh
96+
```
97+
98+
== Configuration
99+
100+
=== Environment Variables
101+
102+
| Variable | Description | Default |
103+
|----------|-------------|---------|
104+
| `SECRET_KEY_BASE` | Phoenix secret key | (generated) |
105+
| `DATABASE_URL` | Database connection string | SQLite file |
106+
| `PHX_HOST` | Production hostname | localhost |
107+
| `PORT` | HTTP port | 4000 |
108+
| `IPFS_API_URL` | IPFS API endpoint | http://localhost:5001/api/v0 |
109+
110+
See [SECRETS.md](SECRETS.md) for complete secrets documentation.
111+
112+
== Project Structure
113+
114+
```
115+
branch-newspaper/
116+
├── assets/ # Frontend assets (JS, CSS)
117+
├── ci-scripts/ # Shared CI/CD scripts
118+
├── config/ # Application configuration
119+
├── lib/
120+
│ ├── branch_newspaper/ # Business logic
121+
│ │ ├── content/ # Content domain
122+
│ │ └── services/ # External services (IPFS)
123+
│ └── branch_newspaper_web/ # Web interface
124+
│ ├── components/ # UI components
125+
│ ├── controllers/ # HTTP controllers
126+
│ └── live/ # LiveView modules
127+
├── priv/ # Private application files
128+
└── test/ # Test files
129+
```
130+
131+
== Documentation
132+
133+
- [ROADMAP.adoc](ROADMAP.adoc) - Development roadmap and MVP plan
134+
- [TODO.md](TODO.md) - Task backlog and improvements
135+
- [SECRETS.md](SECRETS.md) - Secrets and configuration guide
136+
- [AGENTS.md](AGENTS.md) - AI coding guidelines
137+
138+
== CI/CD
139+
140+
This project uses unified CI/CD that runs on both GitHub Actions and GitLab CI:
141+
142+
- *Lint* - Code formatting and static analysis
143+
- *Test* - ExUnit tests across multiple Elixir versions
144+
- *Build* - Release compilation for deployment
145+
- *Mirror* - Automatic sync between GitHub and GitLab
146+
147+
=== Test Matrix
148+
149+
| Elixir | OTP | Status |
150+
|--------|-----|--------|
151+
| 1.15.0 | 25.3 | Minimum supported |
152+
| 1.15.7 | 26.2 | Primary |
153+
| 1.16.0 | 26.2 | Latest |
154+
155+
== Contributing
156+
157+
1. Fork the repository
158+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
159+
3. Run the precommit checks (`mix precommit`)
160+
4. Commit your changes (`git commit -m 'Add amazing feature'`)
161+
5. Push to the branch (`git push origin feature/amazing-feature`)
162+
6. Open a Pull Request
163+
164+
== Repository Mirrors
165+
166+
- *Primary (GitHub)*: https://github.com/hyperpolymath/branch-newspaper
167+
- *Mirror (GitLab)*: https://gitlab.com/maa-framework/3-applications/branch-newspaper
168+
169+
Changes pushed to GitHub are automatically mirrored to GitLab.
170+
171+
== License
172+
173+
This project is licensed under the Palimpsest-MPL-1.0 License - see the [LICENSE](LICENSE) file for details.
174+
175+
== Acknowledgments
176+
177+
- [Phoenix Framework](https://phoenixframework.org/)
178+
- [IPFS](https://ipfs.tech/)
179+
- Part of the [MAA Framework](https://gitlab.com/maa-framework) project
180+
181+
182+
== Architecture
183+
184+
See link:TOPOLOGY.md[TOPOLOGY.md] for a visual architecture map and completion dashboard.

0 commit comments

Comments
 (0)