Giter VIP home page Giter VIP logo

monarch's Introduction

Monarch

CircleCI Coverage Status

This project uses the Contributer Covenant Code of Conduct.

Special Thanks

We've been considerably lucky to get advice, thoughts, contributions, morale support, and friendship from folks and we'd like to recognize them here.

In alphabetical order:

  • Blad Tellez
  • Evan Verimilyea
  • Jacob Richardson
  • Katherine Bomkamp
  • Kayla Hennegin
  • Kyle Asano
  • Matthew Boston
  • Meagan Harris
  • Mike Cummings
  • Phil Hagelberg
  • Seth Etter
  • Tito Villalobos

monarch's People

Contributors

blad avatar creodesigner avatar emmabukacek avatar phylliswong avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

monarch's Issues

[Auth] Move to session ids / cookies

Walking away from JWTs because they're harder to revoke and easy to mess up. Current implementation is insecure given that the JWTs are stored in LocalStorage. And ultimately, we don't benefit from a lot of the advantages with our simple architecture. To keep things simple, let's migrate to standard authentication so we can revoke a token if necessary.

Changes

  • Remove JWT authentication
  • Implement session authentication
  • Return session in a cookie
  • Implement CSRF

[Plugins] attachConfig unhandled promise error

Issue

  • When running the Register Attach Config tests, many errors appear.
    when the provided environment does not have a corresponding config file
      โœ“ should throw
(node:27872) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: No config file available at "/home/ebukacek/projects/monarch/api/config/This file has lost it's way...json".

Error:
ENOENT: no such file or directory, stat '/home/ebukacek/projects/monarch/api/config/This file has lost it's way...json'
(node:27872) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Notes

End to End encryption and data persistence

Purpose

  • For V1, I would like to encrypt messages for the users.
  • Post V1, implementing end to end encryption would be swell.

Questions

  • If a user is reported, we may need to retrieve those messages to determine punishment. Do we ask for the reporter's discretion on showing us messages? Or do they specify specific messages or times?
  • How do we want to implement E2E? Is E2E worth it yet?

So yeah, how are we storing user data? Maybe this? https://github.com/kleinernik/elixir-aes-cmac
How would we do E2E? Signal's protocol looks awesome, but it looks like it's only natively implemented in Java and C. We could use Ports to run it in Elixir for a V1, but a long-term solution would probably be preferable in code that could run on the BEAM VM. Anyway, all discussion is super appreciated; I'm very green in this area.

Setup Elm

Desired Changes

  • Setup basic Elm skeleton underneath /app directory.
  • Add any Elm tests to .travis.yml

getinsertpic.com

Add elm-css

Desired Changes

  • Add elm-css package to app

Setup new build

Desired Changes

  • Integrate with AWS
  • Integrate with CircleCI

Add Form Component Helper Methods

Desired Changes

  • Add helper methods for form elements for the styleguide.
    • Input field
    • Text Area
    • Button
    • Password
  • Ideally, each form element would encapsulate a single function which allows reusability with error
    handling or with higher level form handlers.

Set up Renovate

As a developer,
I want to automate my dependency management,
So I don't want to manually remember to update dependencies,

Changes

  • Implement Renovate with service
  • Implement Renovate with ui

Additional

Add Find Listeners

Desired Changes

  • Add GET /listeners
  • Aggregate possible listeners by zip code and gender identity.

Build Login Page

Desired Changes

  • Add login page.
    • Fields:
      • Email
      • Password
    • Enter Button
    • Responsive

Backfill stories

Issue

  • The following components and containers need stories:
    • Inline Notification
    • Login (Container and component)

Load Knex configuration using nodeenv and remove test

As a systems engineer,
I want to use environment variables to configure Knex,
So I can keep my configuration separate from my code.

  • Add nodeenv as a dependency
  • Remove knexfile.js
    • Use single monarch database for everything; no need for separate dev / test environments.
    • Use nodeenv to load in the rest
    • Update docker-compose.yml to use these shared dependencies
    • Update attach_knex.js plugin to use nodenv
    • Initialize nodeenv in server.js

Add Profile Information

Desired Changes

  • Add profile options to user.
  • Example fields:
    • genderIdentity
      • Required.
    • bio
      • Not required.
    • zipcode
    • requestDescription
      • "What I want in a listener?"
      • Not required.
    • requests: []
      • Either "TO_LISTEN," or "TO_TALK"
      • Required.

getinsertpic.com

Add Message Module

Desired Changes

  • Add conversation table
    • user_accounts - {array of foreign user_account_ids} User ids present in the room
    • messages - {array of foreign message_ids}
  • Add messages table
    • id - {uuid, primary}
    • author_id - {foreign user_account_id}
    • content - {string}
    • create_date - {date}
    • modify_date - {date}
  • Add functionality to send messages and receive messages using websockets.

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.