Collaborate on Unicorn Project

Want to contribute on Unicorn Project? Awesome! Here is everything you need to know.
Share this page:

This content is pulled from the Unicorn Project Git Repo.

Unicorn Project is an open source Cloud Learning Plarform. If you want to improve your skill in Cloud, Serverless, Web development in Cloud (frontend and backend) - you’re in the right place! Keep reading.

Unicorn Project Mission: Make you a Cloud Ninja

Cloud Ninja may mean Cloud Developer, Cloud Engineer or a Cloud Architect. Think about what YOU want it to mean. If you are one of the following, you definitely belong here:

  • Developer, who wants to go deeper to Cloud and DevOps.
  • SysAdmin, who wants to go deeper to Cloud and DevOps.
  • Cloud Engineer or Achitect who wants to learn more about end-to-end application design and deployment in the Cloud.

Regardless if you’re an absolute beginner, or an experienced professional - we promisse you that you’ll learn a bunch.

Unicorn Project Rules

Rule 1: Focus on WHY and HOW

Our main objective is for you to learn. If you write code, it’s not enough to just find the best solution to a problem. Make sure to explain why you did it that way, because like you learn from others - the others will learn from you.

Rule 2: Less is more

The two principles of Unicorn are focus and simplicity:

  • FOCUS: We go deep into, and really learn the technologies that interest us. This means our priority is expertise in one thing, not doing “hello world” to learn 20 different technologies that do the same thing.
  • SIMPLICITY: We go step by step. To start building, you need essential info, not 30 hours of deep dive videos. You’ll get to the deep dark stuff, but the idea is to start small, and build your level up, without getting scared of how complex the technology with all it’s details is. Don’t copy and paste huge chunks of text. No one likes to read dry text. Rather make an effort and try to make it as short as possible. We all appreciate short text that simply “explains it all”.

Unicorn Project = Unicorn Pursuit + Unicorn Workshop

Unicorn Project has two components:

  • Unicorn Pursuit is an open source Voting Web Platform, we are building on the up-and-coming technology stack. These are the skills that will be in the highest demand within the next 5 to 10 years. More details here.
  • Unicorn Workshop is a step by step Cloud Ninja Training, which explains each step of building Unicorn Pursuit. More details about the workshop can be found here.

Technology Stack

The beauty of Unicorn Project is that it allows you to choose the part of technology stack you want to learn, and maybe even contribute on. Basic architecture stack consists of:

  • AWS Serverless (Lambda, Cognito, DynamoDB, Gargate etc.).
  • All AWS resources provisioned using AWS CDK (Cloud Development Kit) - Python.
  • Go (golang).
  • Gin web development framework for Go.

For more details about Unicorn Pursuit Architecture, click here.

Yes, there will probably be a Unicorn Pursuit version on Google Cloud. If you are interested in this, please let us know.

Repository Structure

Tree shown below:

unicorn
├── iac
│   ├── cdk.out
│   └── iac
│       └── __pycache__
└── templates

The main.go and the rest of the Go packages are in the root folder.

Go HTML Templates are in the template folder.

AWS CDK with all it’s components is in iac folder.

I want to contribute, what do I do?

Glad you asked! First, fork a project, and make sure to create your branch. Try naming it as the feature you’re working on.

Now, about what feature to work on…

There are 2 CANBAN boards associated with the Unicorn Git repository. You can visit the Backlog column, and either choose a ticket, move it to “In Progress” and start working on it, or you can propose an improvement by adding a ticket to the “Backlog”.

If it’s an issue or an improvement of an existing functionality, create an Issue, be sure to associate it with the correct Project, and it will automatically be added to To Do column.

The two projects are:

How do I run Unicorn Pursuit in my environment?

You need to set up:

  • AWS CLI v2 (make sure you run aws condifure and configure the authentication, and the desired AWS Region)
  • AWS CDK
  • Go, with the correct GOPATH and GOROOT

You can follow the guide on how to set up a dev environment here, or set the above yourself.

Clone/Fork this repo to $HOME/go/src/, and first deploy the AWS infrastructure. Before you deploy everything with AWS CDK, be sure you’ve deployed the initial CDK CloudFormation Stack, and go to iac folder to check out if CDK “works”:

cd $HOME/go/src/unicorn/iac
cdk ls
UnicornIaC

If your CDK isn’t working, make sure all dependencies found here are correctly deployed, and come back.

Once you’re sure CDK works, go for deployment:

cdk deploy

This will deploy everything: S3 Bucket, DynamoDB Table, Cognito User Pool. The only thing you need to do “manually”, is configure the Cognito Application Cliend in SSM Parameter Store, because it’s confidential, and you shouldn’t dispose it in your code. You can find how to do that here, it’s pretty simple.

Once you’re done with that, Unicorn Pursuit should run smoothly:

cd $HOME/go/src/unicorn
go run unicorn

You should be able to access your App from your browser, port 8080: http://localhost:8080.

Don’t forget that you first need to create a user. Your phone number will be verified, and you can go on and create a few Projects.

Workshop Agenda

True beauty of this workshop is that it’s designed so that you choose the technologies you want to focus on, there is no need to follow the proposed oreder. The Unicorn App is ready and deployable, so just choose your tech. Hopefully you’ll end up contributing.

Documentation

The entire documentation is currently stored on Mats Cloud (a personal blog). The idea is to migrate the content to Unicorn Pursuit, once the web is made.

You can find all the information about Unicorn Pursuit and Unicorn Workshop on Mats Cloud.

Please feel free to start your Cloud Ninja journey, contribute if you want, and give feedback so we can improve.

Requirements & Dev Environment

You can find all the requirements, and how to build your Dev environment here. Based on the technology that interests you most, you may not need to install the entire set of tools.




Last modified May 25, 2020: GoSDKupdated_S3_DynamoDB (5d96831)