Giter Club home page Giter Club logo

peacenik's People

Contributors

cardoso-topdev avatar dependabot[bot] avatar dimakrsna avatar falconandy avatar furysheep avatar ksiger-app avatar mreider avatar omarst910 avatar reinis7 avatar shalako avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

peacenik's Issues

A user can register with the central server

Screen Shot 2020-07-05 at 17 48 57

Nodes are where messages and images are stored. Anyone who is friends with the node admin can join the node. After that, anyone who is friends of a friend can also join.

Please ask questions in Discourse if you are confused

The central server has network page

We will serve a JSON object representing people, friendships, and communities, which we can visualize in the browser (later). No user information will be shown.

A user can get recent activity

There should be an endpoint at a community to see:

Who tagged me.
Who responded to my messages
Who reaponded to things that I responded to.
Who responded to something I liked
Who liked one of my posts

All of these should have links to the posts / comments.

Usernames should be unique

It looks like I can register two users with different emails but the same username. Your username should be unique, so that people can't pretend to be you.

Dockerfiles, Docker compose, build script for Dockerhub, and Kubernetes deployment files

I would like the following

1. Docker files for the following (note that the first 3 appear to be finished):

2. Docker compose for local testing with all the above.

3. Script or pipelinr that builds images when git release is tagged including:

  • images for node serve, central server, and frontend
  • pushing images to dockerhub with same release tag

4. Kubernetes deployment files for productiion deployments - all the above (except minio) including:

  • Postgres databases have persistent storage
  • All secrets for S3, SMTP, and Postgrs, etc. use K8s secrets
  • Scripts for deploying using Kubectl
  • References to release images

I can tag friends in a message or comment

If I tag a friend they will get an email message with a link to my message or comment.

Keep in mind that this should also work in public groups, in which case it will need a different endpoint - since the members will not be friends.

When a new node is registered the central admin gets info and enables

Registering a node should:

  1. Create a file /registrations/disabled/{nodeid} with domain or IP, node ID, email, username, application text ("hi, I am just a normal person who wants to create a node")
  2. If node ID is added to list /registrations/enabled/nodes then the site is enabled.

Screen Shot 2020-06-17 at 09 30 52

An admin can "ban" a user

An admin can suspend a user from a community so he can't see any messages or post anything there. He can also unsuspend them.

Admin can see usage / cost estimator

An admin can make decisions about when to freeze his community by looking at the usage estimator which will show:

  • number of messages total
  • messages posted per day
  • average gigabytes used per user
  • gigabytes stored in s3
  • Increase of gigabytes per week (%)
  • cost estimate of s3 storage per month
  • increase of storage costs per week (%)
  • average number of emails sent per user
  • increase of emails sent by user per week (%)
  • cost estimate of sendgrid per month

I can block you from being a friend

If I don't want you to be a friend, I can make it impossible for you to see me on your friend's friend list. This means you can not send friend requests to me.

An admin can make a community private.

A community can be private or public. So far they are all public. But an admin can also make a private community.

Private communities are local, ans everyone is automatically friends from the start. Sort of like a message board.

You have to choose to post a message to a private community. It doesn't happen like public communities where the message can go anywhere.

Ask questions to make sure we get this right.

The "network" page on central server should indicate network health

There should be a way to see:

  • Average amount of $$ being spent on storage and mail by node unlocked nodes.
  • Same number for locked nodes.
  • How many additional unlocked nodes would bring $$ down to a target monthly cost ($30?)
  • average growth of network (by new members) by month.
  • rate of new nodes needed per month to keep up with network growth for target cost ($30).

We can make a "we need your help" page showing this information to recruit people to create nodes.

An admin can lock a community

An admin can lock a community so that no new members can post anything. This means if I invite you to be friends, and an admin has locked a community, you get a message that says "it looks like this community won't allow new members to post messages. Usually this is to save on storage costs."

I can see your friends

When we are friends, I can see a list of your friends in the communities I am a part of already.

A community can be banned

The super user that set up the central server can add a community to a conf file, or somewhere, so that nobody can login to that community.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.