|
1 | | -= branch-newspaper |
2 | | -Jonathan D.A. Jewell <jonathan.jewell@gmail.com> |
3 | | -:toc: macro |
4 | | -:icons: font |
5 | | -:source-highlighter: rouge |
6 | | -:experimental: |
7 | | -:url-github: https://github.com/hyperpolymath/branch-newspaper |
8 | | -:url-gitlab: https://gitlab.com/hyperpolymath/branch-newspaper |
9 | | -:url-bitbucket: https://bitbucket.org/hyperpolymath/branch-newspaper |
10 | | -:url-codeberg: https://codeberg.org/hyperpolymath/branch-newspaper |
| 1 | += Branch Newspaper |
11 | 2 |
|
12 | | -Git branch news aggregation and changelog generator |
| 3 | +[](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/ci.yml) |
| 4 | +[](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/mirror-sync.yml) |
| 5 | +[](https://github.com/hyperpolymath/branch-newspaper/actions/workflows/codeql.yml) |
13 | 6 |
|
14 | | -image:https://img.shields.io/badge/RSR-Certified-gold[RSR Certified] |
15 | | -image:https://img.shields.io/badge/License-AGPL%20v3-blue[License] |
| 7 | +A Phoenix LiveView application for managing and distributing meeting minutes with IPFS integration for decentralized content storage. |
16 | 8 |
|
17 | | -toc::[] |
| 9 | +== Features |
18 | 10 |
|
19 | | -== Overview |
| 11 | +- *Meeting Minutes Management* - Create, edit, and organize meeting minutes |
| 12 | +- *IPFS Integration* - Store content on IPFS for decentralized, immutable storage |
| 13 | +- *Real-time UI* - Phoenix LiveView for instant updates without page reloads |
| 14 | +- *Tag Organization* - Categorize minutes with tags for easy discovery |
20 | 15 |
|
21 | | -branch-newspaper is part of the link:https://rhodium.sh[Rhodium Standard] (RSR) ecosystem. |
| 16 | +== Tech Stack |
22 | 17 |
|
23 | | -Domain: *software-development* |
| 18 | +| Component | Technology | |
| 19 | +|-----------|------------| |
| 20 | +| Language | Elixir ~> 1.15 | |
| 21 | +| Framework | Phoenix 1.8.1 | |
| 22 | +| Real-time | Phoenix LiveView 1.1.0 | |
| 23 | +| Database | SQLite3 (dev) / PostgreSQL (prod) | |
| 24 | +| Storage | IPFS (Kubo) | |
| 25 | +| CSS | Tailwind CSS v4 | |
24 | 26 |
|
25 | | -== Installation |
| 27 | +== Prerequisites |
26 | 28 |
|
27 | | -[source,bash] |
28 | | ----- |
29 | | -# Clone from GitHub (primary) |
30 | | -git clone {url-github} |
| 29 | +- Elixir 1.15+ and Erlang/OTP 25+ |
| 30 | +- Node.js 18+ (for asset compilation) |
| 31 | +- IPFS node (Kubo) running locally or accessible |
31 | 32 |
|
32 | | -# Or from mirrors |
33 | | -git clone {url-gitlab} |
34 | | -git clone {url-codeberg} |
35 | | ----- |
| 33 | +== Getting Started |
36 | 34 |
|
37 | | -== RSR Stack |
| 35 | +=== Development Setup |
38 | 36 |
|
39 | | -This project follows RSR conventions: |
| 37 | +1. *Clone the repository* |
| 38 | + ```bash |
| 39 | + git clone https://github.com/hyperpolymath/branch-newspaper.git |
| 40 | + cd branch-newspaper |
| 41 | + ``` |
40 | 42 |
|
41 | | -* ✅ ReScript for frontend/logic |
42 | | -* ✅ Deno for JS runtime |
43 | | -* ✅ WASM for performance-critical code |
44 | | -* ✅ Rust/OCaml/Haskell for systems/proofs |
45 | | -* ✅ Guile/Scheme for configuration |
46 | | -* ❌ No TypeScript |
47 | | -* ❌ No Go |
48 | | -* ❌ No npm |
| 43 | +2. *Install dependencies and setup database* |
| 44 | + ```bash |
| 45 | + mix setup |
| 46 | + ``` |
49 | 47 |
|
50 | | -== Mirrors |
| 48 | +3. *Start the IPFS daemon* (in a separate terminal) |
| 49 | + ```bash |
| 50 | + ipfs daemon |
| 51 | + ``` |
51 | 52 |
|
52 | | -[cols="1,2"] |
53 | | -|=== |
54 | | -| Platform | URL |
| 53 | +4. *Start the Phoenix server* |
| 54 | + ```bash |
| 55 | + mix phx.server |
| 56 | + # Or with interactive Elixir shell: |
| 57 | + iex -S mix phx.server |
| 58 | + ``` |
55 | 59 |
|
56 | | -| GitHub (primary) | {url-github} |
57 | | -| GitLab | {url-gitlab} |
58 | | -| Bitbucket | {url-bitbucket} |
59 | | -| Codeberg | {url-codeberg} |
60 | | -|=== |
| 60 | +5. *Visit the application* |
61 | 61 |
|
62 | | -== License |
| 62 | + Open [http://localhost:4000](http://localhost:4000) in your browser. |
| 63 | + |
| 64 | +=== Running Tests |
| 65 | + |
| 66 | +```bash |
| 67 | += Run all tests |
| 68 | +mix test |
| 69 | + |
| 70 | += Run with coverage |
| 71 | +mix test --cover |
| 72 | + |
| 73 | += Run the precommit checks (format, compile warnings, tests) |
| 74 | +mix precommit |
| 75 | +``` |
| 76 | + |
| 77 | +=== Code Quality |
| 78 | + |
| 79 | +```bash |
| 80 | += Check formatting |
| 81 | +mix format --check-formatted |
| 82 | + |
| 83 | += Run all lint checks |
| 84 | +./ci-scripts/lint.sh |
| 85 | +``` |
| 86 | + |
| 87 | +== Configuration |
| 88 | + |
| 89 | +=== Environment Variables |
| 90 | + |
| 91 | +| Variable | Description | Default | |
| 92 | +|----------|-------------|---------| |
| 93 | +| `SECRET_KEY_BASE` | Phoenix secret key | (generated) | |
| 94 | +| `DATABASE_URL` | Database connection string | SQLite file | |
| 95 | +| `PHX_HOST` | Production hostname | localhost | |
| 96 | +| `PORT` | HTTP port | 4000 | |
| 97 | +| `IPFS_API_URL` | IPFS API endpoint | http://localhost:5001/api/v0 | |
| 98 | + |
| 99 | +See [SECRETS.md](SECRETS.md) for complete secrets documentation. |
| 100 | + |
| 101 | +== Project Structure |
63 | 102 |
|
64 | | -Licensed under AGPL-3.0-or-later OR LicenseRef-Palimpsest-0.5. |
| 103 | +``` |
| 104 | +branch-newspaper/ |
| 105 | +├── assets/ # Frontend assets (JS, CSS) |
| 106 | +├── ci-scripts/ # Shared CI/CD scripts |
| 107 | +├── config/ # Application configuration |
| 108 | +├── lib/ |
| 109 | +│ ├── branch_newspaper/ # Business logic |
| 110 | +│ │ ├── content/ # Content domain |
| 111 | +│ │ └── services/ # External services (IPFS) |
| 112 | +│ └── branch_newspaper_web/ # Web interface |
| 113 | +│ ├── components/ # UI components |
| 114 | +│ ├── controllers/ # HTTP controllers |
| 115 | +│ └── live/ # LiveView modules |
| 116 | +├── priv/ # Private application files |
| 117 | +└── test/ # Test files |
| 118 | +``` |
65 | 119 |
|
66 | | -See link:LICENSE[LICENSE] for details. |
| 120 | +== Documentation |
| 121 | + |
| 122 | +- [ROADMAP.adoc](ROADMAP.adoc) - Development roadmap and MVP plan |
| 123 | +- [TODO.md](TODO.md) - Task backlog and improvements |
| 124 | +- [SECRETS.md](SECRETS.md) - Secrets and configuration guide |
| 125 | +- [AGENTS.md](AGENTS.md) - AI coding guidelines |
| 126 | + |
| 127 | +== CI/CD |
| 128 | + |
| 129 | +This project uses unified CI/CD that runs on both GitHub Actions and GitLab CI: |
| 130 | + |
| 131 | +- *Lint* - Code formatting and static analysis |
| 132 | +- *Test* - ExUnit tests across multiple Elixir versions |
| 133 | +- *Build* - Release compilation for deployment |
| 134 | +- *Mirror* - Automatic sync between GitHub and GitLab |
| 135 | + |
| 136 | +=== Test Matrix |
| 137 | + |
| 138 | +| Elixir | OTP | Status | |
| 139 | +|--------|-----|--------| |
| 140 | +| 1.15.0 | 25.3 | Minimum supported | |
| 141 | +| 1.15.7 | 26.2 | Primary | |
| 142 | +| 1.16.0 | 26.2 | Latest | |
67 | 143 |
|
68 | 144 | == Contributing |
69 | 145 |
|
70 | | -See link:CONTRIBUTING.adoc[CONTRIBUTING.adoc]. |
| 146 | +1. Fork the repository |
| 147 | +2. Create a feature branch (`git checkout -b feature/amazing-feature`) |
| 148 | +3. Run the precommit checks (`mix precommit`) |
| 149 | +4. Commit your changes (`git commit -m 'Add amazing feature'`) |
| 150 | +5. Push to the branch (`git push origin feature/amazing-feature`) |
| 151 | +6. Open a Pull Request |
| 152 | + |
| 153 | +== Repository Mirrors |
| 154 | + |
| 155 | +- *Primary (GitHub)*: https://github.com/hyperpolymath/branch-newspaper |
| 156 | +- *Mirror (GitLab)*: https://gitlab.com/maa-framework/3-applications/branch-newspaper |
| 157 | + |
| 158 | +Changes pushed to GitHub are automatically mirrored to GitLab. |
| 159 | + |
| 160 | +== License |
| 161 | + |
| 162 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
71 | 163 |
|
72 | | -== Metadata |
| 164 | +== Acknowledgments |
73 | 165 |
|
74 | | -* Domain: software-development |
75 | | -* Framework: RSR (Rhodium Standard Repository) |
76 | | -* Dublin Core: link:.well-known/dc.xml[.well-known/dc.xml] |
| 166 | +- [Phoenix Framework](https://phoenixframework.org/) |
| 167 | +- [IPFS](https://ipfs.tech/) |
| 168 | +- Part of the [MAA Framework](https://gitlab.com/maa-framework) project |
0 commit comments