Skip to content

Commit 96b124b

Browse files
authored
Add community health files, comparison table, and README improvements (#337)
- CHANGELOG.md: Keep a Changelog format covering recent history - CONTRIBUTING.md: Setup, conventions, and PR guidelines - SECURITY.md: Responsible disclosure policy - docs/README.md: Learning path index for progressive disclosure - docs/deployment.md: Rewrite for Kamal (replace Fly.io/Render/Heroku) - GitHub issue templates (bug report, feature request) - GitHub pull request template with checklist - README: CI badge, stars badge, comparison table vs Bullet Train and Jumpstart Pro, deploy section updated to Kamal, fixed LICENSE link
1 parent fe064d5 commit 96b124b

9 files changed

Lines changed: 361 additions & 50 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: Bug Report
3+
about: Report something that isn't working
4+
labels: bug
5+
---
6+
7+
**Describe the bug**
8+
9+
A clear description of what's broken.
10+
11+
**Steps to reproduce**
12+
13+
1.
14+
2.
15+
3.
16+
17+
**Expected behavior**
18+
19+
What should happen.
20+
21+
**Actual behavior**
22+
23+
What happens instead.
24+
25+
**Environment**
26+
27+
- Ruby version:
28+
- Rails version:
29+
- OS:
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a new feature or improvement
4+
labels: enhancement
5+
---
6+
7+
**Problem**
8+
9+
What problem does this solve?
10+
11+
**Proposed solution**
12+
13+
How should it work?
14+
15+
**Alternatives considered**
16+
17+
Any other approaches you've thought about.

.github/pull_request_template.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## What changed
2+
3+
<!-- Brief description of the changes -->
4+
5+
## Why
6+
7+
<!-- What problem does this solve? -->
8+
9+
## Checklist
10+
11+
- [ ] Tests pass (`rails test:all`)
12+
- [ ] Linters pass (`bundle exec rubocop -A && bundle exec erb_lint --lint-all -a`)
13+
- [ ] Scoped queries to organization where applicable

CHANGELOG.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6+
7+
## [Unreleased]
8+
9+
### Added
10+
11+
- Direct invitation links via Invitations#show page
12+
- Cloudflared tunnel documentation
13+
- Profile and notifications links to navigation
14+
15+
### Changed
16+
17+
- Replaced Fly.io, Render, and Heroku deployment with Kamal
18+
- Renamed PageComponent to SectionComponent
19+
- Increased SectionComponent max width to 2xl
20+
- Use md size for SimpleForm inputs
21+
22+
### Removed
23+
24+
- Sign-in and authentication success toasts
25+
- `created_at` column from organization table
26+
27+
### Security
28+
29+
- Updated faraday to 2.14.1 to fix SSRF vulnerability (CVE-2026-25765)
30+
31+
## [2026-01-23]
32+
33+
### Added
34+
35+
- Linear-inspired light and dark themes
36+
- Essential tests for StripePrice and SubscriptionPolicy
37+
- Git workflow rules to CLAUDE.md
38+
- AI learnings to CLAUDE.md
39+
- CLAUDE.md with project guidance for Claude Code
40+
41+
### Changed
42+
43+
- Simplified AccessRequest STI with template method pattern
44+
- Replaced StripePriceService with StripePrice PORO
45+
- Used Pundit for SubscriptionsController authorization
46+
- Simplified default Stripe checkout settings
47+
- Replaced DropdownPopoverComponent with CSS-only version
48+
- Simplified pundit_user in OrganizationsController
49+
- Redirect to organization dashboard after invitation acceptance
50+
- Improved accessibility and empty state handling in views
51+
- Consolidated documentation into docs/ folder
52+
53+
### Fixed
54+
55+
- Allow users to be re-invited after declining
56+
- Inefficient participant? query
57+
- MembershipPolicy#index to require membership
58+
- Magic string in Membership model
59+
- Notification error when organization is destroyed
60+
61+
### Security
62+
63+
- Enabled Pundit verify_authorized in base controller
64+
- Restricted developer OAuth provider to development only
65+
- Removed admin bypass in development for admin routes
66+
- Added tokens to parameter filter list
67+
- Sanitized markdown output while preserving embeds
68+
- Updated production domain to use HOST environment variable
69+
70+
### Removed
71+
72+
- ruby_llm gem (not core for boilerplate)
73+
- profitable gem
74+
- nested_scaffold gem in favor of AI-based code generation
75+
76+
## [2026-01-06]
77+
78+
### Added
79+
80+
- Improved linting configuration
81+
82+
### Changed
83+
84+
- Refactored form builder variable from `form` to `f`
85+
- Refactored membership system with directional naming for invitations and join requests
86+
87+
## [2025-12-24]
88+
89+
### Added
90+
91+
- Sidebar organization selector with daisyUI tree nav
92+
- Search moved from navbar to sidebar
93+
94+
### Changed
95+
96+
- Updated daisyUI to latest version
97+
- Refactored Devise layouts and improved OAuth divider
98+
- Updated sign-in button text for clarity

CONTRIBUTING.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Contributing to Moneygun
2+
3+
Thanks for your interest in contributing! Here's how to get started.
4+
5+
## Development Setup
6+
7+
1. Fork and clone the repo
8+
2. Run `bin/setup` to install dependencies and set up the database
9+
3. Run `bin/dev` to start the development server
10+
11+
See [Getting Started](docs/getting-started.md) for detailed setup instructions.
12+
13+
## Making Changes
14+
15+
1. Create a feature branch from `main`
16+
2. Make your changes
17+
3. Run the test suite: `rails test:all`
18+
4. Run linters: `bundle exec rubocop -A && bundle exec erb_lint --lint-all -a`
19+
5. Push and open a pull request
20+
21+
## Code Conventions
22+
23+
- **Thin controllers, rich models** - business logic belongs in models
24+
- **Always scope to organization** - use `Current.organization.resources`, never `Resource.all`
25+
- **Associate with membership** - org-scoped resources belong to `membership`, not `user`
26+
- **Pundit for authorization** - generate policies with `rails g pundit:policy resource_name`
27+
28+
See [Development Guide](docs/development.md) for more details.
29+
30+
## Pull Requests
31+
32+
- Keep PRs focused on a single change
33+
- Include tests for new features and bug fixes
34+
- Make sure CI passes (linting + tests)
35+
- Describe what changed and why in the PR description
36+
37+
## Reporting Bugs
38+
39+
Open an issue with:
40+
41+
- Steps to reproduce
42+
- Expected vs actual behavior
43+
- Ruby/Rails version
44+
45+
## Feature Requests
46+
47+
Open an issue describing the use case and proposed solution. Discussion before implementation helps avoid wasted effort.

README.md

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
**The Rails 8 SaaS boilerplate for multi-tenant applications.**
44

55
[![Ruby on Rails](https://img.shields.io/badge/Rails-8-red.svg)](https://rubyonrails.org/)
6-
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
6+
[![CI](https://github.com/yshmarov/moneygun/actions/workflows/ci.yml/badge.svg)](https://github.com/yshmarov/moneygun/actions/workflows/ci.yml)
7+
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENCE.md)
8+
[![GitHub Stars](https://img.shields.io/github/stars/yshmarov/moneygun?style=social)](https://github.com/yshmarov/moneygun)
79

810
![Moneygun features](https://i.imgur.com/QUmTexS.png)
911

@@ -31,8 +33,7 @@ bin/dev
3133

3234
## Deploy
3335

34-
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/yshmarov/moneygun)
35-
[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://dashboard.heroku.com/new?template=https://github.com/yshmarov/moneygun)
36+
Deploy to production with [Kamal](https://kamal-deploy.org/). See the [Deployment Guide](docs/deployment.md) for details.
3637

3738
## Documentation
3839

@@ -64,6 +65,38 @@ bin/dev
6465
</tr>
6566
</table>
6667

68+
## How Does Moneygun Compare?
69+
70+
Moneygun is a lightweight starting point. [Bullet Train](https://bullettrain.co/) and [Jumpstart Pro](https://jumpstartrails.com/) are more full-featured frameworks with ongoing support.
71+
72+
| Feature | Moneygun | Bullet Train | Jumpstart Pro |
73+
|---------|----------|--------------|---------------|
74+
| **Price** | Free | Free | $249-749/yr |
75+
| **License** | MIT | MIT | Commercial |
76+
| **Multi-tenancy** | Route-based | Team-based | Multiple strategies |
77+
| **Authentication** | Devise + OAuth | Devise + OAuth | Devise + OAuth |
78+
| **Two-factor auth** | - | Yes | Yes |
79+
| **Authorization** | Pundit | CanCanCan | Pundit |
80+
| **Payments** | Stripe (Pay gem) | Stripe (Pay gem) | Stripe, Paddle, Lemon Squeezy, Braintree (Pay gem) |
81+
| **Teams & Invitations** | Yes | Yes | Yes |
82+
| **Admin panel** | Avo | Avo | Madmin |
83+
| **REST API** | - | Yes (OpenAPI 3.1) | Yes |
84+
| **Outgoing webhooks** | - | Yes | - |
85+
| **Code generation** | Custom scaffold | Super Scaffolding | Rails scaffold |
86+
| **Mobile apps (iOS/Android)** | Coming soon | - | Hotwire Native ($199-599/yr) |
87+
| **Notifications** | Noticed | ActionMailer + ActionCable | Noticed |
88+
| **Audit logs** | - | Yes | - |
89+
| **User impersonation** | Yes (Masquerade) | - | Yes (Pretender) |
90+
| **Feature flags** | Flipper | - | - |
91+
| **I18n** | Partial (EN, FR) | Yes | Yes |
92+
| **UI framework** | Tailwind + daisyUI | Tailwind (custom theme) | Tailwind + daisyUI |
93+
| **Background jobs** | GoodJob | Sidekiq | SolidQueue / Sidekiq |
94+
| **Official support** | Community | Yes | Yes |
95+
96+
**Choose Moneygun** if you want a free, simple foundation you fully own and understand — no framework abstractions, no subscription, just plain Rails you can read top to bottom.
97+
98+
**Choose [Bullet Train](https://bullettrain.co/)** if you need a production-grade framework with advanced features, code generation, official support, and a team behind it.
99+
67100
## Contributors
68101

69102
<a href="https://github.com/yshmarov/moneygun">
@@ -72,7 +105,7 @@ bin/dev
72105

73106
## License
74107

75-
MIT License - see [LICENSE](LICENSE)
108+
MIT License - see [LICENCE](LICENCE.md)
76109

77110
## Acknowledgments
78111

SECURITY.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Security Policy
2+
3+
## Reporting a Vulnerability
4+
5+
If you discover a security vulnerability, please report it responsibly.
6+
7+
**Do not open a public issue.** Instead, email the maintainer directly or use [GitHub's private vulnerability reporting](https://github.com/yshmarov/moneygun/security/advisories/new).
8+
9+
Include:
10+
11+
- Description of the vulnerability
12+
- Steps to reproduce
13+
- Potential impact
14+
15+
You can expect an initial response within 48 hours.
16+
17+
## Supported Versions
18+
19+
Only the latest version on the `main` branch receives security updates.

docs/README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Moneygun Documentation
2+
3+
## Learning Path
4+
5+
### 1. Get Running
6+
7+
- **[Getting Started](getting-started.md)** - Installation, credentials, and first boot
8+
9+
### 2. Understand the Architecture
10+
11+
- **[Architecture](architecture.md)** - Multi-tenancy, models, Current context, controller patterns
12+
13+
### 3. Build Features
14+
15+
- **[Development](development.md)** - Adding resources, testing, coding conventions
16+
- **[Stripe Integration](stripe-integration.md)** - Payments, subscriptions, and paywalls
17+
18+
### 4. Ship It
19+
20+
- **[Deployment](deployment.md)** - Production deployment with Kamal
21+
- **[Cloudflared](cloudflared.md)** - Tunnel setup for webhook testing
22+
23+
### 5. Keep It Clean
24+
25+
- **[Linting](linting.md)** - RuboCop, erb_lint, Prettier
26+
- **[Syncing](syncing.md)** - Keeping your fork up to date

0 commit comments

Comments
 (0)