Giter Site home page Giter Site logo

emurgohk / cardanoupdate Goto Github PK

View Code? Open in Web Editor NEW
12.0 11.0 21.0 2.98 MB

problem: it's extremely difficult to keep up with everything happening within the Cardano ecosystem

Home Page: http://cardanoupdate.space

License: Mozilla Public License 2.0

HTML 18.14% JavaScript 78.01% CSS 3.84%

cardanoupdate's Introduction

Cardano Update

One single place to get ALL the news about Cardano, up to the current minute.

The problem

People keep asking for updates from IOHK, Emurgo, and the Cardano Foundation but there's nowhere to get a comprehensive idea of what we're all doing. There's also nowhere to see what people in the community are doing.

The solution

A website that anyone can contribute to and update with news.

Reminder

Do read your code after you write it and ask, β€œCan I make this simpler?” We do use a nice minimalist and yet readable style. Learn it, adopt it, use it.

How to run Cardanoupdate locally

Install Meteor

curl https://install.meteor.com/ | sh

Clone repository

git clone https://github.com/EmurgoHK/cardanoupdate.git

Note: if you want to edit things and send a pull request you should fork this project on Github first and clone your fork instead of https://github.com/EmurgoHK/cardanoupdate.git.

Install Dependencies

meteor npm install

Run meteor

npm start (use npm run prod to minify everything and simulate production speeds) (use npm run debug to start Meteor in debug mode)

If Meteor starts but you get a white screen:

meteor npm install --save core-js

If you already have the database but want to update it to the latest version, do a meteor reset before running the above.

Email Setup

Create new file .env in project root and add MAIL_URL

Example for sendgrid email

MAIL_URL = smtp://user:[email protected]:587

Mongo errors

If Mongo exists with status 1: Quick fix: export LC_ALL=C
Proper fix: something is wrong with your OS locales, good luck.

Meteor errors

If you do a git pull and Meteor doesn't start, the first thing to do is run meteor npm install as there may be package updates.

Authentication

To enable Authentication either configure OAuth or copy the following code in the browser console to create a test user: Accounts.createUser({ username: 'testing', password: 'testing', email: '[email protected]', profile: { name: 'Tester' } }) Now you will be logged in as a Test user.

Contributing to Cardanoupdate

A cardinal sin that many open source developers make is to place themselves above others. "I founded this project thus my intellect is superior to that of others". It's immodest and rude, and usually inaccurate. The contribution policy we use at Cardanoupdate applies equally to everyone, without distinction.

The contribution policy we follow is the Collective Code Construction Contract (C4)

If you're wondering why any of the rules in the C4 are there, take a look at the line by line explanation of everything in the C4, this explains the rationale and history behind everything in the protocol and makes it easier to understand.

As this is a new project without a strong pull request histroy, you should take a look at past pull requests from Blockrazor to see how to do things. You may also want to look at the bad pull request role of honour to see how not to send a pull request.

Want to see server logs? Go here.

The project style guide is here.

Step-by-step guide to sending a pull request

  1. Read the contribution protocol and the line by line explanation of the protocol.
  2. Fork this github repository under your own github account.
  3. Clone your fork locally on your development machine.
  4. Choose one problem to solve. If you aren't solving a problem that's already in the issue tracker you should describe the problem there (and your idea of the solution) first to see if anyone else has something to say about it (maybe someone is already working on a solution, or maybe you're doing somthing wrong).

It is important to claim the issue you want to work on so that others don't work on the same thing. Make a comment in the issue: @emurgobot claim before you start working on the issue.

If at some point you want to abandon the issue and let someone else have a go, comment: @emurgobot abandon.

  1. Add the Cardanoupdate repository as an upstream source and pull any changes:
@: git remote add upstream git://github.com/EmurgoHK/cardanoupdate //only needs to be done once
@: git checkout master //just to make sure you're on the correct branch
@: git pull upstream master //this grabs any code that has changed, you want to be working on the latest 'version'
@: git push //update your remote fork with the changes you just pulled from upstream master
  1. Create a local branch on your machine git checkout -b branch_name (it's usually a good idea to call the branch something that describes the problem you are solving). Never develop on the master branch, as the master branch is exclusively used to accept incoming changes from upstream:master and you'll run into problems if you try to use it for anything else.
  2. Solve the problem in the absolute most simple and fastest possible way with the smallest number of changes humanly possible. Tell other people what you're doing by putting very clear and descriptive comments in your code every 2-3 lines.
    Add your name to the AUTHORS file so that you become a part owner of Cardanoupdate.
  3. Commit your changes to your own fork: Before you commit changes, you should check if you are working on the latest version (again). Go to the github website and open your fork of Emurigs, it should say This branch is even with cardanoupdate:master.
    If not, you need to pull the latest changes from the upstream Cardanoupdate repository and replay your changes on top of the latest version:
@: git stash //save your work locally
@: git checkout master
@: git pull upstream master
@: git push
@: git checkout -b branch_name_stash
@: git stash pop //_replay_ your work on the new branch which is now fully up to date with the Cardanoupdate repository

Note: after running git stash pop you should run Meteor and look over your code again and check that everything still works as sometimes a file you worked on was changed in the meantime.

Now you can add your changes:

@: git add changed_file.js //repeat for each file you changed

And then commit your changes:

@: git commit -m 'problem: <50 characters describing the problem //do not close the '', press ENTER two (2) times
>
>solution: short description of how you solved the problem.' //Now you can close the ''. Be sure to mention the issue number if there is one (e.g. #6)    
@: git push //this will send your changes to _your_ fork on Github
  1. Go to your fork on Github and select the branch you just worked on. Click "pull request" to send a pull request back to the Cardanoupdate repository.
  2. Send the pull request, be sure to mention the issue number with a # symbol at the front (e.g. #1014).
  3. Go back to the issue, and make a comment: @emurgobot label "done". This will label this issue as complete, and everyone can test your solution and close the issue if it solves the problem.

What happens after I send a pull request?

If your pull request contains a correct patch (read the C4) a maintainer will merge it.
If you want to work on another problem while you are waiting for it to merge simply repeat the above steps starting at:

@: git checkout master

Tests

To run tests:

meteor test --driver-package practicalmeteor:mocha

You should generally write a test for anything you don't want to break later, otherwise it will probably end up being broken by someone. We use Mocha + Chai for testing. You can see an example in this pull request.

Detailed guide on how to run tests in your local environment is available here.

Can I be paid to contribute to Cardanoupdate?

Yes, this is sometimes possible.

Your first step is to very carefully read and understand everything above, including the linked files, then start fixing problems and sending pull requests!

If your code is amazing and brilliant but you don't understand the contribution process we cannot consider you for a paid position.

Make sure you follow the project on Github so you get updates.

Contact the Cardanoupdate BDFL (Benevolent Dictator For Life): gareth AT emurgo.io if you've been contributing code to Cardanoupdate and want to keep doing it but you are hungry.

Rules for paid contributors

  1. Write tests for your code so that people don't break it later. We use We use Mocha + Chai for testing. You can see an example in this pull request.

  2. Engage in discussion about problems even if you aren't working on them yourself. Be helpful to other contributors, many are volunteers who just want to be part of the project. You (should) have a pretty good understanding of the codebase and can probably save others a lot of time.

  3. Your code should be very well commented and easy to read. It should be immediately clear what your code is doing. You should be able to look at your code a year later, in the morning before coffee, and immediately know what it's doing. Write code and comments like you are teaching someone else how to do what you're doing.

  4. Your pull requests should be a glowing example to others of how to work with the C4. Each one should be a model that others can refer to.

  5. In an ideal world, you would be able to work on any issue you want and there would be no need to assign tasks so that our budget is kept under control. This would be possible because you would always work on the the problems that are really worth solving right now to get to some form of MVP. We can't predict the future, there are no plans or roadmaps (these are not compatible with the C4). Cardanoupdate grows through evolution not intelligent design or central planning. So if something isn't an in-your-face problem right now, it may never be, we could end up going down a totally different road before we get to it. While we want to avoid technical debt, we also don't want to be working on things that will someday maybe become a problem if Cardanoupdate becomes a thing. Demonstrate that we can trust your own judgement on what you should be working on and what's worth spending time on.

License

The license and contribution policy are two halves of the same puzzle. This project is licensed under the MPL v2.0 license. The code is owned (and Copyright) by all contributors. Contributors are listed in the AUTHORS file. Please add your name to the end of this file in your first pull request so that you also become an owner.

This license ensures that:

  1. Contributors to Cardanoupdate cannot have their code stolen and used by closed-source projects without their permission. It's very common for corporate software merchants to steal code from open source projects and use it in their closed source or even patented products and services in direct competition with the original project. For example, anyone who contributes code to a project released under a BSD/MIT style license effectively has no rights to their own code or any improvements made upon it.
  2. Anyone using any code from Cardanoupdate must also share their work under a share-alike license so that anyone else can use their improvements.
  3. No one can change the above, without explicit written permission from all contributors, which is essentially impossible to get. That means even the founder of this project cannot ever relicense and sell Cardanoupdate and its code. It belongs to everyone who contributed to it (and it always will).

It is not permissible to use any code from this codebase in anything that isn't using a share-alike license. Violations of the license will absolutely not be tolerated, and the terms of this license will be brutally enforced through a variety of very creative methods.

cardanoupdate's People

Contributors

akatrodiya avatar anbud avatar ashhimself avatar dilpreetsio avatar gsovereignty avatar higunjan avatar ioioio8888 avatar ismailmellouli avatar madanbhandari avatar mrbitmaster avatar omar20261 avatar porcellus avatar reimirrr avatar rkbsoftsolutions avatar samuelralak avatar venatoria avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cardanoupdate's Issues

problem: cannot add cardano related projects

problem: there are a number of new cardano related projects popping up all the time from IOHK, Emurgo, and the community in general. There's no definitive list of these projects.

solution: allow users to add projects and display these separately to news items. Projects require a headline (maybe 100 chars), a short description (no markdown etc), and a link.

problem: cannot comment on projects

problem: cannot comment on projects

solution: use a similar system to blockrazor allowing users to comment with "Cool stuff" and "Red flags".

Problem : Top Navbar broken and bad UX

Problem : Top Navbar broken on small screen
top-nav-broken

Solution :

  1. Must be some responsive issue, check and fix
  2. Remove extra icon (list icon)
  3. Link bell icon to /notifications

problem: sorting by popularity isn't meaningful

problem: sorting by popularity isn't meaningful because the oldest entries will have more time to gain more votes.

solution: copy blockrazor's comment voting metrics (or reimpliment something similar if that's simpler). The general idea is:
rating = (upvotes - downvotes) / total number of votes

#54 is related

Problem : User can't know anything about author

Problem : User can't know anything about author
Solution :

  1. Add short bio in profile, so that reader can know about authors
  2. add edit profile section
  3. link author's name in news to their profile

Problem : Home page shows only news

Problem : Home page shows only news

Solution :

Add top or recent news and projects only, for complete list add individual link for each (news and projects)
OR
Add projects as well on list give user options to show only news or only projects or both

ping @gazhayes

Problem : No user notifications

Problem : No user notifications

Solution : Add notifications for comments received on news (for authors & users who have comments), mentions etc.

Problem: New homepage layout causing UI inconsistency

Problem: The news content currently uses a grid card layout which introduces the following issues

  • large gaps between contents leading to unnecessary scrolling and general bad UI
  • less room for news content meta making this section appear out of style
  • settings icon squeezed to the right corner making it look out of place and incosistent with the rest of the UI

The introduction of a Projects sections also takes too much space from the little space that was initially designed for the news content making the rest of the page appear too squeezed and out of style.

Solution: Revert back to the old layout making the following UI improvements:

  • reduce max width of card images and possible have it centered vertically
  • truncate news summary and eliminate the Read More btn replacing it with a subtle read more link
  • make news headline bolder
  • eliminate the Projects section to the right giving more room for the news content

If the grid layout is absolutely necessary, we could have a layout toggle allowing users to switch between grid and the default layout - a seperate issue can be logged for this.

Problem: no boilerplate to start with

Problem: no boilerplate to start with

solution: I guess grab a minimal set from one of the other Emurgo repositories. Whoever takes this can decide.

Problem: Wrong username used in codebase

Problem: I've used user.username in most places for the username, yet username is saved at user.profile.name now.

Solution: Update the codebase to reflect new changes.

problem: site has bad UI/UX

problem: cardanoupdate UI feels generic

solution: Give cardanoupdate a unique look and feel, borrowing some UI aspects from the the official cardano website. Start with the following:

  • change font to montserat, a free proxima nova alternative
  • body default background color #f3f5f7
  • body default font color #565867
  • apply background color #091a26 to header
  • apply background color #0e2c37 to sidebar
  • font color in header and sidebar should a have a color of #fff
  • change primary button background colors to #016F80
  • update news card elements' css, should have a blog like feel
  • update single news item page UI

Problem : News UI-UX is bad

Problem : News UI-UX is bad

Solution : Update UI-UX, take design references from other news website or blogs

problem: link to uploaded image is broken

problem: image preview is not available when adding or editing news. submitting updated or new news item doesn't render image as well, in production. however, this worked for me in development only after changing my image upload directory.

Using public/images/ as my upload directory locally.

ping @anbud @gazhayes

Problem : Home page bad UI-UX

Problem : Home page bad UI-UX, it's not balanced with and without images post, too much blank space.

Solution : Need to do some work on UX and design, update layout

Problem: Users can't flag spam or abusive content

Problem: Users can't flag spam or abusive content. A flagging mechanism is quite important for a website with user-generated content.

Solution: Allow users to flag news items and comments, and allow moderators to see flagged items and decide whether to keep them or remove them.

problem: sign up can be annoying

problem: sign up can be an annoying process for users who are used to signing up with google/facebook/github

solution: add sign up/in using oauth tokens from popular third party services

problem: news times are absolute

problem: news posting times are absolute which makes it difficult to reason about.

solution: use momentjs to show how long ago a post was made.

problem: display tiles are larger than needed

problem: display tiles are larger than needed

solution: put metadata in a single row - author etc from the top and number of stars/likes at the bottom can be merged into a single row at the bottom

problem: layout with images is clunky

problem: layout with images is clunky

solution: force images to be scaled to an appropriate size (but maintain ratio). Take the largest dimension from width and height and render the image at (for example) 200px width or height while leaving the other side to auto scale and preserve the original ratio.

problem: not all projects will have a github repo

problem: not all projects will have a github repo

solution: make the github url optional when submitting a new project but also add a warning icon to the card with a tooltip: This project may not be open source and should not be trusted with anything of value until the community has been able to audit the source code.

Problem: cannot add news items

Problem: cannot add news items

Solution: allow logged in users to add news items. A headline (I guess 140 chars max), summary (500 chars max) and body.

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.