How to contribute to utopian V2, the complete tutorial
I suppose our SteemFest 3 presentation piqued your curiosity. You've also discovered that we plan to release the V2 in April 2019. So how about you help us release it faster?
What does Utopian need?
Am I suited for this?
If you want to help us we are looking for some experienced developers to do some tasks posted as issues on GitHub. If you're are beginner it will probably be a little difficult for you.
What is the technology stack?
- Database: MongoDB
- Backend: NodeJS 10, Mongoose, HapiJS, Joi, Ramda, mocha, chai
- Frontend: NodeJS 10, Quasar Framework, jest
- Monorepo with lerna, packages manager with yarn
- Development process: Kanban, Git flow, Jira, Pull Requests
Are you up to the task? Let's find out what you can do to help us.
Give me some work!
Finding my first task
The first thing you need to do is check the public project board. Any task that is in the TODO column and not assigned is ready for development and waiting for someone. Check the different user stories available, look at the acceptance criteria and the design.
If no one does them, someone from the core team will work on them at some point but they are designed to be done by you, utopian supporters/contributors/followers. Once your work is done, you'll be able to write an article about it and get a nice utopian upvote! Take the time to read the LICENSE file too ;)
You've picked one?
Hi, I would like to start working on the task GITHUB_ISSUE_LINK.
A little bit about me: a short description of your experience as a developer
and your github repo if you have one, it's really better if you have one
You will then join a dedicated discord channel and meet your fellow collaborators. Please read the pinned messages of the channel before doing anything else. There are a few guidelines to help you code and how the project is structured.
@icaro, @nothingismagick and me will be here to help you if you ever need it.
I'm doing this final selection step to be sure I won't spend my time doing PR reviews.
Let's get to work!
Setup the development environment as an external contributor
I'm going to walk you through all the necessary steps so you can start working on your task.
Getting the code
You need to install first:
Make sure everything is OK
[email protected]:~$ node --version v10.13.0 [email protected]:~$ lerna --version 3.4.0 [email protected]:~$ yarn --version 1.9.4 [email protected]:~$ git --version git version 2.17.1
Then fork the repository v2.utopian.io and clone your repo into your favorite development folder.
Now if everything is have been done correctly simply run inside the root directory
This will install every packages. Almost done? Well there are still a few things to setup.
NB: if for some reason something were wrong, you can run
yarn separately in the api, auth and client package.
Configuring external services
copy the .env.example file to .env
The first thing you need to do is setup a mongo database. You can either install one locally or use an external provider like mLab. This is what we are using for the development of the website. That way, all of us use the same database and we know if some features that change the models break each other code. Once you're done, you can update the .env. You should have something like this:
The GitHub authentication app
For now, utopian use GitHub as a social provider to create an account or to sign in. We will add LinkedIn and Google later too but that's another story.
Go to your GitHub Developper account and click on Register a new application. Fill the form and get your APP ID and SECRET.
- Application name: Utopian Personal OAuth
- Homepage URL: http://localhost:8081
- Application description: Utopian Personal OAuth
- Authorization callback URL: http://localhost:8081
Once you're done, you can update the .env. You should have something like this:
You can type whatever you want. The application use JWT token to manage the authentication inside the app. This secret will be used to sign and verify the access and refresh tokens. But for development purposes, no need to have a strong key.
SteemConnect App & Encryption Key
For now, most of the tasks (and probably all them) won't need the Steem blockchain. So it's not needed for the development. But if you want to have the complete setup, you can create your SteemConnect App. This App will be used in utopian to publish content on the blockchain but not exactly like most applications are currently doing it. Further explanations will be provided later in our FAQ.
OK you're all set for the API, let's check the Auth app.
The Auth app
Utopian will have many services in the future and we want one central point for authentication. This app will also allow newcomers to create a free steem account. @icaro is working actively on it!
Copy the .env.example file to .env like for the API project.
You can leave the default values and add your GitHub OAuth App ID.
You should have something like this:
The Client App
Everything you need have been previously created. You just need to add the different keys. Your file should then look like this if you've left the default settings:
UTOPIAN_API='"http://localhost:5000"' GITHUB_CLIENT_ID='"92d8b2d965f0d0e7b5ba"' STEEMCONNECT_CLIENT_ID='""' // Not needed for now UTOPIAN_DOMAIN='"http://localhost:8080"' AUTH_DOMAIN='"http://localhost:8081"'
Notice the single and double quotes.
And that's it for now. This tutorial might evolve as development progresses because we will need more external services.
As announced during the SteemFest 3, I will publish a series of tasks on GitHub on Tuesday, Nov 13th. Those tasks will concern the article module. While you will be working on this, the core team will continue its work on fundamental features needed in the app. The more we progress, the more we will be able to allow you to contribute on all the other modules.
If you want a head start, don't wait for Tuesday and start reading the amazing documentation of the Quasar framework.
Good luck to all of you, and I hope you help us release Utopian V2 before April 2019 :D!