Application Workflow
Technical overview of the Glow application workflow
The Glow platform implements a structured workflow for retroactive funding of contributions to the XRPL ecosystem. This document provides a technical overview of the process from submission to disbursement.
Wave Creation
A Wave represents a time-bounded collection of submissions processed together.
Note: In the platform's data model, a Wave is represented by the
Cohortmodel. The terms refer to the same grouping — "Wave" is the public-facing name, "cohort" the internal schema name.
Technical Implementation
Waves are managed through the Cohort model with key fields:
name: Wave identifier (e.g., "Wave 1")startDate: When the Wave begins accepting submissionsendDate: When the Wave closes (null for active Waves)status: Current state of the Wave
Only one Wave can be active at a time. When a submission is created — whether a Scout nomination or a direct contributor submission — it is automatically associated with the currently active Wave (where endDate is null and startDate is in the past).
The admin interface allows administrators to:
Create new Waves
Set start dates
Close Waves by setting end dates
View all submissions within a Wave
Submission Process
Submissions enter the platform two ways: a Scout nominates a contribution, or a contributor submits their own project directly. Both create the same underlying record and follow the same downstream workflow.
Step 1: Authentication
Scouts and contributors authenticate using their credentials through the authentication module. Role-based access control ensures Scouts can create nominations and contributors can create direct submissions.
Step 2: Project and Contributor Selection
Nomination Workflow (Scout)
Scout Authentication
Scout logs in to the Glow platform
System verifies scout role permissions
Project Management
Scout searches for existing projects
If project exists:
Scout selects the existing project
If project doesn't exist:
Scout creates a new project with required details:
Project name
Description
GitHub repository
X handle
Website URL
Contributor Management
Scout searches for the contributor
If contributor exists:
Scout selects the existing contributor
If contributor doesn't exist:
Scout creates a new contributor record with:
First and last name
Email address
GitHub username
X handle
Role (creator, maintainer, contributor, editor)
Active dates
Status
Nomination Creation
Scout provides contribution details:
Description of contribution
Date of contribution
System creates a submission linking:
Selected contributor
Selected project(s)
Current Wave
Scout information
Direct Submission Workflow (Contributor)
Contributor Authentication
Contributor logs in to the Glow platform
Project Management
Contributor searches for an existing project or creates a new one with the required details (name, description, GitHub repository, X handle, website URL)
Submission Creation
Contributor provides contribution details (description, date of contribution, project category) and the independence/employment disclosure
System creates a submission linking the contributor, the selected project(s), and the current Wave, with no associated Scout
Workflow Diagram
Login (Scout or Contributor) │ ▼ Search Projects │ ├─────────────┐ │ │ ▼ ▼ Project Exists? Project Doesn't Exist │ │ │ ▼ │ Create Project │ │ │ │ ▼ │ Select Project │ │ │ └──────┬──────┘ │ ▼ Identify Contributor (Scout selects/creates; direct submitter is the contributor) │ ▼ Create Submission
Note: The diagram above is a simplified representation of the workflow. In actual implementation, the system uses API endpoints for these operations.
The platform provides search functionality with API endpoints:
/api/projects/search- Find existing projects/api/contributors/search- Find existing contributors
When creating new records:
New projects are added through
/api/projectsNew contributors are added through
/api/contributors
Step 3: Submission Details
When creating a submission, the submitter provides:
Contribution description
Contribution date
Project category
Independence/employment disclosure
The system automatically records:
Wave ID (active Wave)
Submitter information (Scout for nominations; contributor for direct submissions)
Timestamp
Technical Implementation
Submissions are stored in the Nomination model with relationships to:
contributorId: Reference to the Contributor being put forwardprojectsIds: References to Projects involvedcohortId: Reference to the current WavenominatorId: Reference to the Scout making the nomination (null for direct contributor submissions)
Voting Process
Step 1: Wallet Connection
Voters authenticate by connecting their XRPL wallet. This integration occurs through:
Wallet provider selection (Xaman, GemWallet, Crossmark, etc.)
Connection via the corresponding wallet provider API
Address verification
Step 2: Wallet Verification
To prevent spam, voters must prove wallet ownership by signing a small transaction (1 drop) to a designated verification address. This registration is stored in the Voter model.
Step 3: Casting Votes
Voters browse submissions through public pages and can cast three types of votes:
Yay (+1)
Nay (-1)
Null (0)
The voting system enforces one vote per submission per wallet.
Technical Implementation
Votes are stored in the Vote model with:
voterId: Reference to the VoternominationId: Reference to the Submissionvote: The vote valuetimestamp: When the vote was cast
API endpoints for voting:
GET /api/nominations/list- View submissionsPOST /api/votes- Cast votesPUT /api/votes/:id- Update votes
Judging Process
Step 1: Judge Review
Judges review submissions with access to:
Contribution details
Project information
Contributor information
Community voting metrics
Step 2: Assessment Creation
Judges evaluate submissions against eligibility and quality criteria:
Is the contributor over 18?
Does the contribution fall within an eligible category?
Is the contribution recent work (within 6 months)?
Has the work been previously funded (through Glow or another program)?
Step 3: Reward Size Assignment
Based on their assessment, judges assign a shirt size:
Decline (0)
Small (1)
Medium (2)
Large (3)
Multiple judges assess each submission, typically a minimum of three.
Step 4: Final Approval
Once all submissions in a Wave have been assessed, judges conduct a final review and approve the distribution.
Technical Implementation
Judge assessments are stored in the JudgeAssessment model:
nominationId: Reference to the SubmissionuserId: Reference to the Judgestatus: 'approved' or 'declined'criteria: Object containing evaluation criteria resultscomment: Optional judge feedbackrejectionReason: Required if status is 'declined'
Key judge-related API endpoints:
GET /api/nominations/metrics- View submission metricsPOST /api/judgeAssessments- Create assessmentsPUT /api/judgeAssessments/:id- Update assessmentsPOST /api/nominations/actions/approve- Approve final distributions
Contributor Application Process
Step 1: Notification
Contributors nominated by a Scout receive email notifications about their nomination. Contributors who submitted directly continue straight to the application steps.
Step 2: Account Creation
If contributors don't have an account, the system facilitates account creation with the 'contributor' role.
Step 3: Eligibility Verification
Contributors must complete an eligibility questionnaire covering:
Age verification (18+)
Sanctioned region check
Independence/employment disclosure (disclose if the contribution overlaps with employment at Ripple or an affiliated organization)
Conflict of interest checks (not a Scout or Judge in the relevant Wave)
Step 4: Terms Acceptance
Contributors must accept:
Terms of Service
Code of Conduct
Step 5: Wallet Registration
Contributors register their XRPL wallet to receive funds.
Step 6: Application Submission
Contributors complete their application with additional project details:
Previous XRPL Grants or Aquarium participation
Website, GitHub, and social media links
Additional project information
Step 7: KYC Verification
Contributors may need to complete KYC verification through the integrated verification service.
Technical Implementation
The contributor journey is managed through:
Contributormodel with verification fieldsKycVerificationmodel for KYC statusAPI endpoints for:
Getting contributor status
Updating eligibility
Accepting terms
Registering wallet
Submitting application details
Disbursement Process
Step 1: Verification Check
The system verifies all requirements are met:
Submission approved by judges
Contributor completed application
KYC verification (if required)
Valid XRPL wallet connected
Step 2: Payment Processing
Payments are processed through XRPL transactions to the contributor's registered wallet.
Step 3: Transaction Recording
All disbursements are recorded for transparency and audit purposes.
Integration Points
The workflow integrates with several external systems:
Email Service
Used for notifications to contributors
Account verification
Status updates
XRPL Network
Wallet connectivity
Transaction signing
Payment disbursements
KYC Provider
Identity verification
Compliance checks
Security Measures
The workflow includes multiple security controls:
Role-based access control
Wallet signature verification
Multi-judge approval requirements
KYC verification
Transaction validation
Last updated