GrantMaster: Web3 Grants Management Application
- Team Name: Zaniyar Jahany
- Payment Address: 1YXxtnTF119WBAnZbKT7ecyQHLNXZhaaqho1Xu99HTG2LYh (ASSETHUB USDT)
- Level: 1
Project Overview πβ
This application is in response to the RFP Grant Management Web Application.
Overviewβ
This project aims to create a comprehensive web application for managing grant applications (and deliveries in a possible follow-up grant) for the W3F Grants Program, based on data in the GitHub repositories. I will provide an interactive and user-friendly interface for easier navigation for the W3F grant committee. This includes a crawler for easy extraction and calculation of relevant data, a REST API for accessing said data as well as a web-based frontend with a modern look & feel.
As a passionate developer in the field of blockchain and decentralized projects, I recognize the value that transparency and organization bring to grant management. I'm excited to create a tool that enhances the process for the Web3 Foundation.
Project Detailsβ
The following components will be included in the GrantMaster:
- Crawler: I will provide an efficient crawler that is resilient to failure and fetches the data from GitHub that is neccessary for the scope of this project.
- API: I will provide a comprehensive and efficient API.
- UI/UX components: Detailed designs can be found here for Grants Page, Grant Details, Teams, and Stats.
- Tech Stack: The web app will use a React (TypeScript) frontend that comes in ant design, Node.js (TypeScript) crawler, Node.js (TypeScript) REST API and a MongoDB database. I'll use Mongoose to enforce the db schema. For GitHub interaction, I'll use GitHub's REST API.
DB Schemaβ
The database schema is organized into several TypeScript interfaces representing the essential entities involved in the GrantMaster application. These interfaces are a rough draft of the structure of data I'll be working with and how that data will be represented in the mongodb database.
Please note that these interfaces are subject to change and refinement as the project progresses and more specific needs or requirements are identified. However, it is important to emphasize that such changes are expected to be additive in nature. This means that while additional attributes might be included to these interfaces as needed for the completeness and accuracy of the data representation, no existing attributes are anticipated to be removed. So, you can consider these as the minimum set of data that will be stored and managed in the system.
interface Grant {
name: string;
level: number;
paymentAddress: string;
githubPRs: string[];
applicationLink: string;
applicationDoc: string;
status: string;
lastUpdated: Date;
committeeApprovals: string[];
committeeRejections: string[];
milestones: Milestone[];
totalCosts: number;
totalFTE: number;
totalDuration: number;
}
interface Milestone {
name: string;
grantName: string;
duration: number;
FTE: number;
costs: number;
deliverables: Deliverable[];
codeRepos: string[];
license: string;
githubPrs: string[];
deliveryLink: string; // Scope: follow-up grant
deliveryDoc: string; // Scope: follow-up grant
evaluations: Evaluation[];
}
interface Deliverable {
name: string;
number: string;
description: string;
specification: string;
}
interface Team {
name: string;
teamMembers: TeamMember[];
grants: Grant[];
contactName: string;
contactEmail: string;
website?: string;
registeredAddress?: string;
registeredLegalEntity?: string;
codeRepos: string[];
}
interface TeamMember {
name: string;
linkedin?: string;
github?: string;
}
// Scope: follow-up grant
interface Evaluation {
author: string;
link: string;
doc: string;
}
For the actual implementation of the database the Mongoose npm package will be used.
Data Synchronization Approachβ
The data synchronization is designed to seamlessly update the applications (and deliveries, as part of a possible follow-up grant), making sure we're always working with the most current information. This process will be executed using a combination of a configurable crawler and GitHub Actions.
GitHub Actions
I will deliver a set of GitHub actions that triggers the crawler whenever new comments, pull requests, or PR reviews are added.
Configurable Crawler
To support and complement the push-based system facilitated by GitHub Actions, I will also employ a configurable crawler. The crawler will be responsible for selectively updating specific applications (or deliveries, as part of a possible follow-up grant). Furthermore, the crawler will parse the data from GitHub Actions for incremental updates. This ensures a scalable system that doesn't need to process entire datasets for minor updates, enhancing the efficiency of our data synchronization strategy.
Ecosystem Fitβ
The project fits into the ecosystem by enhancing the grant management process for the Web3 Foundation, thus contributing to the growth and development of the Dotsama ecosystem. The target audience is the Web3 Foundation grant committee and other similar grant programs. The project meets the need for efficient grant management and transparency.
As per my knowledge, no similar projects exist within the Dotsama ecosystem.
Team π₯β
Team membersβ
- Zaniyar Jahany
Contactβ
- Contact Name: Zaniyar Jahany
- Contact Email: jaha@zhaw.ch
- Website: https://www.MetaRoom.City
Legal Structureβ
- Registered Address: No registred entity
- Registered Legal Entity: No registred entity
Team's experienceβ
Zaniyar Jahany is a Senior science associate at ZHAW (university of applied science in ZΓΌrich) in the field of Augmented Reality and Blockchain at the Industry 4.0 Lab. Beside his research at the university he is one of the co-founders of https://swissDAO.space, the biggest Web3.0 builder community in Switzerland and the founder of https://MetaRoom.city, a swiss-made decentral, self-owned, self-hosted Metaverse for everyone which builds on top of todays web2.0 ecosystem, and enables web3.0 functionallity.
Team Code Reposβ
Team LinkedIn Profiles (if available)β
Development Status πβ
This application is in reply to the RFP Grant Management Web Application.
Wireframesβ
Here are some rough Lo Fi wireframes:
To get a feeling how the page will look like, I prepared this Hi Fi wireframe. Keep in mind that some details are missing, due to limitations in the wireframing framework: