This content originally appeared on DEV Community and was authored by Vetheon
TL;DR
Built Source License – a complete software licensing management system in Ruby/Sinatra that handles everything from payments to license validation. It’s open source, self-hostable, and free.
Alpha Status: This is early alpha software! Core features work, but expect bugs and missing functionality. Perfect for developers who want to contribute and help shape an open-source licensing platform.
GitHub: https://github.com/PixelRidge-Softworks/Source-License
The Story: Why I Built This
I was tired of paying ridiculous fees to licensing platforms. $100+/month plus 5-8% transaction fees? For indie developers, that’s brutal.
But building your own licensing system is a nightmare:
- Payment processing (Stripe, PayPal)
- Secure license generation
- Activation limits and validation
- Admin dashboards
- Customer management
- API endpoints for your software
Months of work before you can even launch your product.
So I built Source License to solve this once and for all.
What It Actually Does
Complete E-commerce Flow
# Customer journey: Browse β Cart β Checkout β License delivered
# Supports both one-time and subscription products
Cryptographically Secure Licenses
# Multiple formats supported:
# XXXX-XXXX-XXXX-XXXX (classic)
# UUID format
# Custom patterns
Real License Validation API
# Validate any license in real-time
curl -X GET http://localhost:4567/api/license/XXXX-XXXX-XXXX-XXXX/validate
# Response:
{
"valid": true,
"status": "active",
"product": "My Software",
"expires_at": "2025-12-31T23:59:59Z",
"activations_used": 1,
"max_activations": 3
}
Machine Fingerprinting
# Prevent license sharing with activation limits
curl -X POST http://localhost:4567/api/license/XXXX-XXXX-XXXX-XXXX/activate \
-H "Content-Type: application/json" \
-d '{"machine_fingerprint": "unique_machine_id"}'
The Tech Stack
Backend: Ruby + Sinatra (because sometimes simple is better)
Database: MySQL, PostgreSQL, or SQLite
Payments: Stripe + PayPal with webhook handling
Auth: JWT tokens for API access
Security: CSRF protection, rate limiting, audit logging
Why Ruby/Sinatra?
- Fast to develop: Got the MVP running in weeks
- Simple deployment: Single file, minimal dependencies
- Mature ecosystem: Solid gems for everything
- Easy customization: ERB templates, clear separation of concerns
Architecture That Makes Sense
Source-License/
βββ app.rb # Main Sinatra application
βββ lib/
β βββ models.rb # Sequel ORM models
β βββ license_generator.rb # Crypto-secure license creation
β βββ payment_processor.rb # Stripe/PayPal integration
β βββ controllers/ # Modular route handlers
β βββ public_controller.rb
β βββ admin_controller.rb
β βββ api_controller.rb
βββ views/ # ERB templates
βββ test/ # Comprehensive test suite
Models that matter:
-
User
– Customer accounts -
Product
– Your software products -
Order
– Purchase tracking -
License
– The actual licenses -
LicenseActivation
– Machine-specific activations -
Subscription
– Recurring billing
Getting Started is Dead Simple
Alpha Warning: You’re about to install alpha software! Things might break, features might be missing, but that’s part of the fun. Please report any issues you find!
# 1. Clone it
git clone https://github.com/PixelRidge-Softworks/Source-License.git
cd Source-License
# 2. Run the installer (handles everything)
./install.sh # Linux/macOS
# or
.\install.ps1 # Windows
# 3. Deploy automatically
./deploy.sh # Linux/macOS
# or
.\deploy.ps1 # Windows
# 4. Visit http://localhost:4567
# Admin: http://localhost:4567/admin
The installer does everything:
Checks Ruby version
Installs gems via Bundler
Sets up database with migrations
Creates config from templates
Launches the server
Configuration: Just Edit .env
# Payment processing
STRIPE_PUBLISHABLE_KEY=pk_test_your_key
STRIPE_SECRET_KEY=sk_test_your_key
PAYPAL_CLIENT_ID=your_paypal_id
# Database (pick one)
DATABASE_ADAPTER=mysql # or postgresql, sqlite
DATABASE_HOST=localhost
DATABASE_NAME=source_license
# Email delivery
SMTP_HOST=smtp.gmail.com
SMTP_USERNAME=your_email@gmail.com
# Security
JWT_SECRET=your_super_secret_jwt_key
APP_SECRET=your_app_secret_change_this
Real-World API Usage
Integrate License Validation Into Your App
Popular language SDKs are on the way too!
Desktop Software (C#):
public async Task<bool> ValidateLicense(string licenseKey)
{
var client = new HttpClient();
var response = await client.GetAsync($"https://yourdomain.com/api/license/{licenseKey}/validate");
var json = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<LicenseValidation>(json);
return result.Valid;
}
Web App (JavaScript):
async function validateLicense(licenseKey) {
const response = await fetch(`/api/license/${licenseKey}/validate`);
const data = await response.json();
return data.valid;
}
CLI Tool (Python):
import requests
def validate_license(license_key):
response = requests.get(f'https://yourdomain.com/api/license/{license_key}/validate')
return response.json()['valid']
Features That Actually Matter
Admin Dashboard
- Real-time sales statistics
- Customer management
- License operations (suspend, revoke, extend)
- Order fulfillment
- Customizable branding
Customer Portal
- License validity checking
- Download links
- Activation management
- Order history
Security Features
- Rate limiting (prevent API abuse)
- CSRF protection
- SQL injection prevention (Sequel ORM)
- Audit logging (track everything)
- JWT authentication
Use Cases I See
Desktop Apps: Perfect for selling Windows/Mac software
WordPress Plugins: Manage pro versions with subscription renewals
IDE Extensions: VS Code, IntelliJ plugins with trial periods
Creative Software: Photoshop plugins, video editing tools
Educational Tools: Student licenses, institution-wide deployments
The Economics Make Sense
Commercial platforms charge:
- Monthly fees: $50-200+
- Transaction fees: 3-8% per sale
- Setup costs: Often $500+
Source License costs:
- Hosting: ~$20/month VPS
- Transaction fees: Just payment processor (2.9%)
- Setup: Free (open source)
Break-even: If you’re doing $1000+/month in sales, you’ll save money immediately.
What’s Coming Next
I’m actively working on:
Advanced Analytics: Revenue tracking, customer insights
Multi-language Support: Internationalization
Mobile Admin: Manage licenses from your phone
Plugin System: Extend with custom functionality
Performance Improvements: Redis caching, optimizations
Want to Contribute?
This is GPL v2.0 licensed – completely free and open. Since we’re in alpha, contributions are especially valuable!
Ways to help:
Report bugs via GitHub Issues (seriously, we need this!)
Suggest features in Discussions
Submit PRs (check our style guide)
Improve documentation (always needed in alpha)
Star the repo if you find it useful!
Alpha testing – use it and tell us what breaks
Get Started Today
GitHub: https://github.com/PixelRidge-Softworks/Source-License
Quick Start: README has everything you need
Community: Join GitHub Discussions for support
Alpha Testers Welcome: We need feedback to make this better!
Questions?
Drop them in the Github Discussion! I’m happy to help with:
- Deployment issues (expect some in alpha!)
- Custom integrations
- Feature requests
- Architecture questions
- Bug reports and alpha feedback
I am not on Dev.to commonly, so comments here may go unanswered!
What licensing challenges are you facing? Maybe Source License can solve them (or we can build the solution together)!
Follow me on Github for more open source projects and Ruby/web development content! And remember – this is alpha software, so buckle up for the ride!
This content originally appeared on DEV Community and was authored by Vetheon