Skip to content

Commit

Permalink
Merge pull request #57 from soonaverse/master
Browse files Browse the repository at this point in the history
merge master
  • Loading branch information
adamunchained authored Sep 6, 2023
2 parents f13dd62 + 7c2a65e commit 84e287b
Show file tree
Hide file tree
Showing 40 changed files with 471 additions and 339 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/deploy-prod.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Action | Auto deploy "develop" to wen.soonaverse.com
name: Action | Auto deploy "production" to soonaverse.com

on:
release:
Expand All @@ -21,7 +21,7 @@ jobs:
- name: Install Dependencies
run: npm install
- name: Build project
run: npm run build
run: npm run build:prod
- name: Publish to Cloudflare Pages
uses: cloudflare/pages-action@v1
with:
Expand Down
7 changes: 1 addition & 6 deletions .github/workflows/ui_eslint.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
name: UI | ES Lint

on:
pull_request:
paths:
- packages/ui/**
on: push

jobs:
front_end_es_lint:
Expand All @@ -21,8 +18,6 @@ jobs:
- name: Install Dependencies
run: npm install
- name: Lint
working-directory: packages/ui
run: npm run lint
- name: Prettier
working-directory: packages/ui
run: npx prettier --check .
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ lib
**/lib
**/node_modules
.angular
.github
CONTRIBUTING.md
MANIFESTO.md
README.md
33 changes: 32 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,37 @@ We want to make contributing to this project as easy and transparent as possible
- Proposing new features
- Becoming a maintainer

SOON token is used to reward contributors for their effort.

## SOON token Rewards

All contributions are rewarded through SOON tokens. Yes, your contribution is valued.

Current code review committee:
- @adam_unchained
- @flyingrabbit-lab

Core reviewer labels appropriate category on the PR or github issue. If no category is defined on either of them make sure to ask code reviewer by tagging them. SOON reward can be discussed prior on the Github issue before the work even starts. This allows interested parties to understand potential reward.

There are three categories of contribution:

**Category 1 (up to 1000 SOON):**

- Requires one approval on PR by code review committee member.

**Category 2 (up to 5000 SOON):**

- Requires one approval on PR by code review committee member.
- Requires majority SOON Committee approval.

**Category 3 (unrestricted):**

- Requires one approval on PR by code review committee member.
- Requires majority SOON Committee approval.
- Requires SOON vote through Soonaverse on-chain votting.

Please note, contributor is responsible to notify and reach out to members for approval.

## We Develop with Github

We use github to host code, to track issues and feature requests, as well as accept pull requests.
Expand All @@ -27,7 +58,7 @@ Pull requests are the best way to propose changes to the codebase (we use [Githu

In short, when you submit code changes, your submissions are understood to be under the same [MIT License](http://choosealicense.com/licenses/mit/) that covers the project. Feel free to contact the maintainers if that's a concern.

## Report bugs using Github's [issues](https://github.com/soonaverse/soonaverse/issues)
## Report bugs using Github's [issues](https://github.com/soonaverse/app/issues)

We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://docs.github.com/en/github/managing-your-work-on-github/creating-an-issue)

Expand Down
7 changes: 7 additions & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# List of all contributors and SOON token reward

This table provides complete history into each contributions and their SOON reward.

User | PR | SOON Reward | SMR Address | Authorized By | Comments |
---- | -- | ----------- | ----------- | ------------- | -------- |
[@emmap3-do](https://github.com/emmap3-do) | https://github.com/soonaverse/app/pull/47 | 500 | smr1qzt5qs6m6s2us8ll0hdfefzpr43cdz2xmjzywmrkz0sc2uyegvzjwazr6f8 | [@adam_unchained](https://github.com/adam_unchained) | Testing, continuous support in #dev channel
44 changes: 44 additions & 0 deletions MANIFESTO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# The Soonaverse Manifesto

Soonaverse is a collaboration between dedicated professionals, skilled in navigating the constant tension between invention and production to find ways to create, build, and get things done. We have different backgrounds, skills, and experiences, but share a singular goal, a shared vision, a common mantra - together we can build the impossible.

Our current “impossible” is <span style="text-decoration:underline;">building a more equitable world through decentralization</span>. A world where centralized systems have NOT concentrated society’s influence, power and wealth into the hands of an infinitesimally small number of individuals and organizations.

Decentralization will enable us to avoid cronyism and chaos. Where we are, what we’ve done, and how we’re SEEN is based on merit not image, value not celebrity.

Like the DAOs we create, we believe that contributions should be judged without bias, blind to color, class, and creed, where every vote counts, where “we” is stronger than “me”, and organizations are equal and flat because that’s the way they should be.

We believe that privacy isn’t just a cloak, it's a shield, and an anonymous voice is still a voice. DAOs must have trust, they must have reputation for members to create meaningful connections, so when people gather they become makers not mobs.

Your voice matters and NO ONE should demand a fee for expressing your opinion, no one should force you to pay to exercise your right to vote, decentralization must be an enabler not a wall.

Our DAOs will bring the change the world needs, by spreading the power of every decision across 7.7 billion points of humanity, where everyone's an influencer, because everyone has influence.

Ask WHO we need. We’ll say, YOU.

Ask HOW can it be done. We’ll say, TOGETHER.

Ask WHERE it will happen. We’ll say, RIGHT BEFORE YOU EYES.

And then ask us WHEN. No, ask us WEN and we will say SOON, because THAT is always our answer.

## Our DAOs

### The Soonaverse

#### Founding Principles

1. "All Voting MUST be FREE and Securely ON-Chain"
2. “DAOs must have immutable TRUST and REPUTATION”
3. “An anonymous voice is STILL A VOICE and members must be HEARD”

#### Commitments

* The Soonaverse is committed to building the foundation for organizations that enable DAOs and embrace personal sovereignty - where every person and community has the power to vote, the power to choose.
* The Soonaverse will remove the “dysfunction from decentralization” and steer communities towards its better angels through trust and reputation.
* The Soonaverse prioritizes the will of DAOs and its communities by creating equitable systems of proposal management. We believe that members should make their case, give people their vote and let the best ideas win.
* We will always strive to be a place for experimentation and innovation, but not at the cost of our members.
* The Soonaverse will be built with the most reliable and advanced decentralization technologies available, once they are PROVEN to be safe.
* We will embrace transparency and honesty in our approaches, especially when it comes to transitioning from centralized to decentralized technologies.
* The SOON token is a means to govern the platform and is woven into the very fabric of the system. We avoid fees wherever possible, especially when it comes to voting.
* We will create tokenomics that keep the platform funded and thriving to support the ecosystem, our members, and the DAOs we are creating.
89 changes: 85 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,92 @@
<h1 align="center">Soonaverse - Web3 platform for communities build on IOTA & Shimmer</h1>

<p align="center">
<img src="src/assets/static-home/images/Soonaverse-logo.svg" alt="angular-logo" width="120px" height="120px"/>
<br>
<em>Soonaverse is a platform for communities to create and manage decentralized autonomous organizations (DAOs), NFTs, projects, companies, and markets, on the feeless infrastructure of the IOTA and SMR network.</em>
<br>
</p>

<p align="center">
<a href="https://www.soonaverse.com"><strong>www.soonaverse.com</strong></a>
<br>
</p>

<p align="center">
<a href="CONTRIBUTING.md">Contributing Guidelines</a>
·
<a href="https://github.com/soonaverse/app/issues">Submit an Issue</a>
·
<a href="https://twitter.com/soon_labs">Twitter</a>
<br>
<br>
</p>

<p align="center">
<a href="https://twitter.com/soon_labs">
<img src="https://img.shields.io/twitter/follow/soon_labs" alt="Follow on Twitter" />
</a>&nbsp;
<a href="https://discord.gg/x7sBB2SZCg">
<img src="https://img.shields.io/discord/892481940953915433.svg?logo=discord&logoColor=fff&label=Discord&color=7389d8" alt="Discord conversation" />
</a>
</p>

<hr>

# Overview

Soonaverse Application.
Soonaverse delivers DAO Management Tools, NFT Marketplace, Token Management, On-Chain voting and much more. Open source application for everyone to utilize and benefit from. Using [BUILD-5](https://build5.com) platform and IOTA it can deliver feeless on chain functionality. Soonaverse operates on both IOTA and Shimmer network.

We would love your contributions. Please make sure you read contribution guide to join the effort. Key areas we need help:
- UI Improvements
- Documentation
- Bug fixing
- New modules & integrations

Soonaverse is governed through SOON token. SOON Tokens are used to reward efforts and contributions.

## Current Soon Committee
- @adam_unchained
- @DaveRL6
- @iotaben
- @shonuff
- @TangleAccountant
- @garrett1314

# Design
- [WebApp Figma](https://www.figma.com/file/vYJByA2q3c13oAjJ3IHfk1/Soonaverse---WebApp?type=design&node-id=2736%3A37764&mode=design&t=FVgSq8fJghvHAVPS-1)
- [WebApp Dark Figma](https://www.figma.com/file/Qmor0eN2Iwq2GXMoFXB8t0/Soonaverse---WebApp-(Darkmode)?type=design&node-id=2730%3A33049&mode=design&t=KxGswtBYAYrizzcS-1)
- [Responsive Figma](https://www.figma.com/file/P341i2urVRKpZg6GdrrLg0/Soonaverse---Responsive?type=design&node-id=2730%3A33049&mode=design&t=OrwcreWX2tU8ep7M-1)

# Development Setup

## Prerequisites

Install [Node.js](https://nodejs.org/en) which includes [Node Package Manager](https://www.npmjs.com)

Soonaverse uses key libraries:
- [Angular](https://angular.io/)
- [Tailwind CSS](https://tailwindcss.com/)
- [Ng Zorro](https://ng.ant.design)
- [Build-5/interfaces](https://www.npmjs.com/package/@build-5/interfaces) and [Build-5/lib](https://www.npmjs.com/package/@build-5/lib)
- [Algolia](https://www.algolia.com/) (for searches)

## Setting Up a Project

Make sure to install all dependencies:

```npm install```

Run locally:

```npm start```

You can switch between production / sandbox environment by either using environment.ts or environment.prod.ts.

# 🤝 Contributing

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/soonaverse/soonaverse/pulls)
Earn SOON when you contribute!!!

We welcome all contributions. Please read our [CONTRIBUTING.md](https://github.com/soonaverse/app/blob/master/CONTRIBUTING.md) first. You can submit any ideas as [pull requests](https://github.com/soonaverse/app/pulls) or as [GitHub issues](https://github.com/soonaverse/app/issues).
We welcome all contributions. Please read our [CONTRIBUTING.md](CONTRIBUTING.md) first. You can submit any ideas as [pull requests](https://github.com/soonaverse/app/pulls) or as [GitHub issues](https://github.com/soonaverse/app/issues).

Thank you for supporting us free open source licenses.
Thank you for supporting us with free open source licenses.
5 changes: 3 additions & 2 deletions src/app/@api/base.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
} from '@build-5/interfaces';
import { Build5Env } from '@build-5/lib';
import { CrudRepository } from '@build-5/lib/lib/repositories/CrudRepository';
import { Observable, map } from 'rxjs';
import { Observable, map, of } from 'rxjs';

export const DEFAULT_LIST_SIZE = 50;
export const WHERE_IN_BATCH = 10;
Expand All @@ -29,7 +29,8 @@ export class BaseApi<T> {

public listen = (id: string) => this.repo.getByIdLive(id);

public listenMultiple = (ids: EthAddress[]) => this.repo.getManyByIdLive(ids);
public listenMultiple = (ids: EthAddress[]) =>
ids.length ? this.repo.getManyByIdLive(ids) : of([]);

public top = (lastValue?: string, limit?: number) => this.repo.getTopLive(lastValue, limit);

Expand Down
36 changes: 19 additions & 17 deletions src/app/@api/member.api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import {
TransactionRepository,
} from '@build-5/lib';
import dayjs from 'dayjs';
import { Observable, combineLatest, map, switchMap } from 'rxjs';
import { Observable, combineLatest, map, of, switchMap } from 'rxjs';
import { BaseApi, SOON_ENV } from './base.api';

export interface TokenDistributionWithAirdrops extends TokenDistribution {
Expand Down Expand Up @@ -91,17 +91,19 @@ export class MemberApi extends BaseApi<Member> {
};

public listenMultiple = (ids: EthAddress[]) =>
this.memberRepo
.getByFieldLive(
ids.map(() => 'uid'),
ids,
)
.pipe(
map((members) => {
members.sort((a, b) => (a.createdOn?.seconds || 0) - (b.createdOn?.seconds || 0));
return members;
}),
);
ids.length
? this.memberRepo
.getByFieldLive(
ids.map(() => 'uid'),
ids,
)
.pipe(
map((members) => {
members.sort((a, b) => (a.createdOn?.seconds || 0) - (b.createdOn?.seconds || 0));
return members;
}),
)
: of([]);

public topStakes = (memberId: EthAddress, lastValue?: string): Observable<StakeWithTokenRec[]> =>
this.stakeRepo.getByMemberLive(memberId, lastValue).pipe(
Expand Down Expand Up @@ -192,15 +194,15 @@ export class MemberApi extends BaseApi<Member> {
): Observable<Transaction[]> {
const orderBys = Array.isArray(orderBy) ? orderBy : [orderBy];

const all = this.transactionRepo
.getTopTransactionsLive(orderBys, lastValue)
const prevOwner = this.transactionRepo
.getTopTransactionsLive(orderBys, lastValue, undefined, memberId)
.pipe(map((result) => result.filter((t) => t.member !== memberId)));

const members = this.transactionRepo.getTopTransactionsLive(orderBys, lastValue, memberId);

return combineLatest([all, members]).pipe(
map(([notForMember, forMember]) =>
[...notForMember, ...forMember].sort((a, b) => {
return combineLatest([prevOwner, members]).pipe(
map((combined) =>
combined.flat().sort((a, b) => {
const aTime = a.createdOn?.toDate().getTime() || 0;
const bTime = b.createdOn?.toDate().getTime() || 0;
return -aTime + bTime;
Expand Down
7 changes: 6 additions & 1 deletion src/app/@api/milestone.api.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Milestone, PublicCollections } from '@build-5/interfaces';
import { BaseApi } from './base.api';
import { BaseApi, SOON_ENV } from './base.api';
import { MilestoneRepository } from '@build-5/lib';

@Injectable({
providedIn: 'root',
})
export class MilestoneApi extends BaseApi<Milestone> {
protected milestoneRepo = new MilestoneRepository(SOON_ENV);

constructor(protected httpClient: HttpClient) {
super(PublicCollections.MILESTONE, httpClient);
}

public getTopMilestonesLive = () => this.milestoneRepo.getTopMilestonesLive();
}
13 changes: 0 additions & 13 deletions src/app/@api/milestone_atoi.api.ts

This file was deleted.

13 changes: 0 additions & 13 deletions src/app/@api/milestone_rms.api.ts

This file was deleted.

13 changes: 0 additions & 13 deletions src/app/@api/milestone_smr.api.ts

This file was deleted.

Loading

0 comments on commit 84e287b

Please sign in to comment.