derrickreimer / level Goto Github PK
View Code? Open in Web Editor NEWTeam communication optimized for deep work
License: Other
Team communication optimized for deep work
License: Other
Toss an event to Absinthe that a GQL subscription can listen for to dynamically update the bookmarkedGroups
list.
Right now, it just errors out hard:
In this scenario, redirect the user to the sign-in page. Controller tests appreciated.
group_memberships
join tableRather than encoding logic in Elm to determine what users to display in the sidebar of groups, let's push that logic to the server-side and just ask the server for all the featuredMemberships
for the group.
space_users
tablegroups
field to spaces
state
argument, in addition to order
, to filter by open or closed (default to OPEN
)It shouldn't be too big of a task since the build pipeline is fairly simple right now. Brunch is definitely less commonly used, and now that Phoenix is abandoning it, I'd prefer to be on the "default" stack: phoenixframework/phoenix#2779
Might come in handy:
Probably using this: https://github.com/NoRedInk/elm-assets-loader
Looks like support for Webpack 4 is very close: NoRedInk/elm-assets-loader#12
We have a hard-coded asset reference here: https://github.com/levelhq/level/blob/master/assets/elm/src/Signup.elm#L220
Sadly, Circle CI does not support this ๐ข
https://circleci.com/docs/2.0/faq/#can-i-build-fork-prs-using-workflows
Perhaps we need to switch to Travis.
group_invitations
tableuser
object to retrieve their pending invitationsGroups belong to spaces. They are the mechanism for organizing:
Any member of the space should be allowed to create a group. At a minimum, they require a name and a designation about whether they are "private". Optionally, groups can have a description. Down the line, we might add more personalization options, like an avatar and banner photo.
groups
tablecreateGroup
GraphQL mutationRight now things don't scale down well when the viewport gets small.
It would be great to implement some e2e encryption. Current 'best standard' by my knowledge is the 'Double Ratchet' algorithm implemented by Signal:
It would make the development experience so much easier without the hassle of installing the environment dependencies (Elixir, PostgreSQL & Node.js) with their correct versions. It would also help a lot with deployment.
Follow these instructions: https://tailwindcss.com/docs/controlling-file-size
We are going to stick with using real names for people. This will also cut down on the number of fields required to get in to the product and get started.
This domain logic is all prototype stuff and needs to be rebuilt to fit the latest paradigm in the works.
Most likely infinite scroll.
Using Elixir's typespecs will have two benefits:
@doc
stringA page for listing all accessible groups.
posts
tablecreatePost
mutationThe current user should only be allowed to see:
Follow-up to #10
Follow-up to #10
updateGroup
GraphQL mutationOnly users who are allowed to see the group are allowed to update it.
To promote maximum shardability, let's use UUIDs for primary keys.
Resources:
Currently if a user type on the textarea to post something on a group and type ENTER
to feed a new line, it is displayed a single line on the listing of posts.
But if a user double feed the line new, it appears as wanted.
The fix should be simple as adding white-space: pre-wrap;
to the rendering container
For now we just have a 16x16 px PNG file in the images directory.
In the readme, it is stated that Elixir 1.4.3 or higher is required. There is also a "deploy to heroku" button which attempts to deploy the master branch to, well, heroku. As of a few moments ago when I tried it, deploying failed due to an insufficient Elixir version.
Apparently mix.exs
states the version of elixir must be ~> 1.6
. Here's the full stacktrace from heroku:
-----> Elixir app detected
-----> Checking Erlang and Elixir versions
WARNING: elixir_buildpack.config wasn't found in the app
Using default config from Elixir buildpack
Will use the following versions:
* Stack heroku-16
* Erlang 20.1
* Elixir 1.5.0
-----> Will export the following config vars:
DATABASE_URL
LEVEL_HOST
LEVEL_MAILER_HOST
LEVEL_POOL_SIZE
LEVEL_SECRET_KEY_BASE
LEVEL_SMTP_HOST
LEVEL_SMTP_PASSWORD
LEVEL_SMTP_PORT
LEVEL_SMTP_USERNAME
* MIX_ENV=prod
-----> Stack changed, will rebuild
-----> Fetching Erlang 20.1
-----> Installing Erlang 20.1 (changed)
-----> Fetching Elixir v1.5.0 for OTP 20
-----> Installing Elixir v1.5.0 (changed)
-----> Installing Hex
* creating /app/.mix/archives/hex-0.17.3
-----> Installing rebar
* creating /app/.mix/rebar
* creating /app/.mix/rebar3
-----> Fetching app dependencies with mix
Resolving Hex dependencies...
Dependency resolution completed:
absinthe 1.4.5
absinthe_phoenix 1.4.0
absinthe_plug 1.4.0
bamboo 0.8.0
bamboo_smtp 1.4.0
base64url 0.0.1
certifi 2.0.0
combine 0.9.6
comeonin 3.0.2
connection 1.0.4
cowboy 1.1.2
cowlib 1.0.2
dataloader 1.0.0
db_connection 1.1.3
decimal 1.4.1
earmark 1.2.4
ecto 2.2.8
elixir_make 0.4.0
ex_doc 0.18.1
gen_smtp 0.12.0
gettext 0.13.1
hackney 1.11.0
idna 5.1.0
joken 1.5.0
jose 1.8.4
metrics 1.0.1
mime 1.2.0
mimerl 1.0.2
phoenix 1.3.2
phoenix_ecto 3.2.3
phoenix_html 2.10.5
phoenix_pubsub 1.0.2
plug 1.5.0
poison 3.1.0
poolboy 1.5.1
postgrex 0.13.5
ranch 1.3.2
ssl_verify_fun 1.1.1
timex 3.1.15
tzdata 0.5.12
unicode_util_compat 0.3.1
* Getting phoenix (Hex package)
* Getting phoenix_pubsub (Hex package)
* Getting phoenix_ecto (Hex package)
* Getting postgrex (Hex package)
* Getting phoenix_html (Hex package)
* Getting gettext (Hex package)
* Getting cowboy (Hex package)
* Getting comeonin (Hex package)
* Getting timex (Hex package)
* Getting ex_doc (Hex package)
* Getting absinthe (Hex package)
* Getting absinthe_plug (Hex package)
* Getting absinthe_phoenix (Hex package)
* Getting dataloader (Hex package)
* Getting joken (Hex package)
* Getting bamboo (Hex package)
* Getting bamboo_smtp (Hex package)
* Getting gen_smtp (Hex package)
* Getting hackney (Hex package)
* Getting plug (Hex package)
* Getting poison (Hex package)
* Getting mime (Hex package)
* Getting certifi (Hex package)
* Getting idna (Hex package)
* Getting metrics (Hex package)
* Getting mimerl (Hex package)
* Getting ssl_verify_fun (Hex package)
* Getting unicode_util_compat (Hex package)
* Getting jose (Hex package)
* Getting base64url (Hex package)
* Getting decimal (Hex package)
* Getting earmark (Hex package)
* Getting combine (Hex package)
* Getting tzdata (Hex package)
* Getting elixir_make (Hex package)
* Getting cowlib (Hex package)
* Getting ranch (Hex package)
* Getting connection (Hex package)
* Getting db_connection (Hex package)
* Getting ecto (Hex package)
* Getting poolboy (Hex package)
-----> Copying hex from /app/.mix/archives/hex-0.17.3
-----> Compiling
** (Mix) You're trying to run :level on Elixir v1.5.0 but it has declared in its mix.exs file it supports only Elixir ~> 1.6
! Push rejected, failed to compile Elixir app.
! Push failed
Follow-on from #64
I urge you to integrate accessibility for people with disabilities in your interface. You have a golden opportunity to make it happen from the start, rather than have to retrofit it in later on.
People with disabilities have very little options for accessible communication platforms. This would be a fantastic tool.
Consider items such as:
Thank you
During guided setup, the plan is to present the user with a "magic link" that can be shared around with colleagues (dare I say, posted in Slack?) to quickly join a space.
open_invitations
table to store the token and state
allow_open_invitations
boolean to spaces
, non-nullable, default to true
false
, then signing up via an open invitation should be disallowedNow that #44 is done, we need a proper user registration form.
Just installed level in development following the README. Everything went smoothly except when visiting http://localhost:4000 you just get a blank page. There were no errors, just no content. It took me a while to figure out what to do next.
It would be helpful to either have a message with a link to sign up in https://github.com/levelhq/level/blob/master/lib/level_web/templates/page/index.html.eex or just a redirect to sign up in the controller. Just thought this may help others who are setting it up locally.
CI is failing after adding the mix format
verification.
When a new Level instance is created, the user needs to perform a few setup steps:
The settings and wizard state should be stored in an instances
table. The first (and only) record should be seeded upon creation of the database.
Requests started getting rejected once we cut over to level.app. (It seemed to work fine on level-prod.herokuapp.com). I temporarily disabled protection here: 5d1df27
This is currently low risk since signups / authenticated sessions are disabled in prod right now.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.