Solution Design - BenGWeeks/Zapp.ie GitHub Wiki
1. Document History
See Git commit history
2. Introduction
2.1 Background
Zapp.ie is a rewards and recognition tool developed by Evo Labs. It leverages Bitcoin Lightning Network technology to offer micro-Bitcoin rewards (called Zaps) within Microsoft Teams. The tool integrates with Microsoft Teams, providing seamless interactions for team members to send and receive Zaps for team contributions and engagement.
The solution also incorporates AI features with an AI Copilot bot, which helps automate notifications, reminders, and personalized engagement messages.
2.2 Objective
This document describes the complete technical solution for Zapp.ie, not limited to the MVP. It will evolve as new features and phases are added. The goal is to provide a flexible, scalable platform that enhances team engagement and recognition using cryptocurrency rewards.
2.3 Document Purpose
The purpose of this document is to serve as a live and evolving blueprint for the technical design and architecture of Zapp.ie. It outlines the architectural components, data model, security, and deployment strategy. This document should be updated continuously as the system evolves with new features and technologies.
2.4 Definitions Acronyms and Abbreviations
Acronym | Definition |
---|---|
Zaps | Micro-Bitcoin rewards |
LNBits | Lightning Network wallet and account management system |
MVP | Minimum Viable Product |
AI | Artificial Intelligence |
ALM | Application Lifecycle Management |
UAT | User Acceptance Testing |
3. Technical Design
3.1 Technical Solution
The Zapp.ie solution leverages multiple technologies:
- Microsoft Teams for user interface and interaction.
- Bot Framework for implementing the AI Copilot, which interacts with users.
- React App for rendering UI components such as Zaps sent, leaderboard, and user balance.
- LNBits to manage Bitcoin Lightning Network transactions.
- Azure Cloud to handle hosting, scalability, and security.
3.2 Architecture Schema
3.3 Architecture Component Description
- Bot Framework: Manages user interactions and automates tasks such as sending reminders and engagement messages via the Copilot.
- React Application: Handles front-end functionality in Microsoft Teams.
- LNBits API: Connects with LNBits for handling micro-transactions on the Lightning Network.
- Azure Cloud Services: Provides backend infrastructure, including data storage, APIs, and security.
4. Detailed Design
4.1 Data Storage/Data Model
LNBits handles wallet and transaction management. Extensions to LNbits are used for any additional storage. The solution intentionally keeps additional storage information to a minimum (such as no additional databases).
4.2 Application Components
The following key components make up Zapp.ie:
- Bot (Copilot): Sends notifications, reminders, and interacts with users.
- Microsoft Teams Integration: Provides a UI for users to check balances, send Zaps, and view leaderboards.
- LNBits: A Lightning Network-based wallet and transaction system for managing Zaps.
- React Components: For user interaction and administration settings.
4.3 Workflow and Automation
Zapp.ie automates many aspects of team engagement:
- Copilot sends automated reminders to use Zaps, thanks contributors, and manages workflow engagement.
- Admin Automations (future feature) will allow setting up automatic reward schedules via LNBits extensions.
4.4 User Interface Design
The UI integrates within Microsoft Teams, offering intuitive components like balance displays, a Zap leaderboard, and a reward dashboard. Future updates will add more customization and dashboard enhancements.
4.5 Licensing
The following licenses are required to run the solution:
- Microsoft Power Platform License
- Microsoft 365 Licensing
- Azure Subscription for hosting and scaling.
- LNBits License for wallet management (if applicable).
4.6 Security Considerations
The Zapp.ie platform is designed with security in mind:
- Azure Active Directory (AAD) for secure authentication and user management.
- Encrypted Communication for all transactions and user data.
- GDPR Compliance for handling user data and privacy.
4.7 Testing Strategy
A robust testing strategy ensures all components are validated:
- Unit Testing for individual components.
- Integration Testing for connecting the bot, LNBits, and React App.
- User Acceptance Testing (UAT) for real-world scenario validation by end users.
- Continuous Testing in Azure DevOps pipelines for ensuring each update passes validation before deployment.
4.8 Deployment Strategy
The Zapp.ie solution uses GitHub workflow for continuous integration and deployment (CI/CD). New features will be deployed in the following environments:
- Developer Sandboxes: For building and testing.
- Testing: For internal validation and feature testing.
- Production: For live deployment after approval.
5. Technical Risks & Issues
5.1 Risks
ID | Title | Mitigation |
---|---|---|
001 | LNbits infrastructure downtime | Skill-up team on running production infrastructure in Azure |
5.2 Issues
ID | Title | Description | Mitigation |
---|---|---|---|
001 | LNbits API functionality | API limitations mean we have to query inefficient | Raise issues with LNbits, and in future submit PRs |
002 | LNbits Admin limitations | Some UI features around user management are limited | Raise improvements with LNbits, and submit PRs |
003 | Bot Frame challenges | Deploying bots can be programmatic with clashing IDs etc. | Raise tickets, document typical fixes |