Collaborate on Unicorn Project
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:
- AWS Infrastructure: where we use AWS CDK for managing AWS resources via Python
- Unicorn Pursuit Web App: which is our web app, done in Golang, React and AWS SDK
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.
Feedback
Was this page helpful?
Awesome! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.