rootski.io Knowledge Base#
Training videos walking through the architecture, tools, and how to contribute to rootski. |
|
https://rootski.signin.aws.amazon.com/console
|
š£ Welcome to the rootski codebase!#
This is the codebase for the application running at rootski.io.
Note
you can find detailed information about the architecture/tech stack, onboarding/contributing, general full-stack development training resources and more on our knowledge base.
rootski is a full-stack application for studying the Russian language by learning roots.
rootski uses an A.I. algorithm called a ātransformerā to break Russian words into roots. rootski enriches the word breakdowns with data such as definitions, grammar information, related words, and examples and then displays this information to users for them to study.
</br></br>
How is the rootski project run? (Hint, click here to get involved š)#
rootski is developed by volunteers! Emojis represent types of contributions, (emoji key)
Above all else, rootski is a platform for learning and mentoring anyone with an interest in
frontend/backend development
developing data science models
data engineering
analytics
MLOps
DevOps
UI/UX design
product design
building a SaaS product that handles real customer transactions (note, weāre aware of GDPR and data privacy regulations and do not expose the subset of customer data that is sensitive to contributors)
running a business
The best way to learn to write production-ready software is to⦠write production-ready software š¤£. If one of these describes you, you may really enjoy contributing some pieces to rootski,
you are inexperienced at writing software, modeling, doing analytics, etc., but you would love to learn how it is doneāideally with the guidance of some really experienced, friendly mentors
you work in some area of tech for you day job and want to explore areas to keep growing, but you donāt necessarily want to build an entire SaaS product yourself just to learn about a handful of sub-parts of that
Engineers learn a lot by seeing examples of how things are built. The difficulty there is that you typically have to join a company to see the inside of a large SaaS product. rootski is ābuilt in the openā so that anyone interested in software or data science can see a fully working example of an SaaS/AI product built with industry best practices.
If youāre willing to learn, weād love to have you on our team!
We have training materials that can take you from whatever experience level you may be at and get you onboarded and contributing.
To get started, read the Contributing section below.
</br>
Contributors who have onboarded and contributed features#
Eric Riddoch - Been working on rootski for 3 years and counting!
Ryan Gardner - Helping with all of the legal/business aspects and dabbling in development
Isaac Robbins - Learning and building experience in MLOps and DevOps!
Josh Abrahamsen - Experienced in SDET/DevOps/Azure looking to gain experience in more languages and technologies.
Friends#
Completed a lot of the rootski onboarding and chat with us in our Slack workspace about miscellaneous code questions, careers, advice, etc.
Colin Varney - Full-stack python guy. Is working his first full-time software job!
Fazleem Baig - MLOps guy. Quite experienced with Python and learning about AWS. Working for an AI startup in Canada.
Ayse (Aysha) Arslan - Learning about all things MLOps. Working her first MLE/MLOps job!
Sebastian Sanchez - Learning about frontend development.
Yashwanth (Yash) Kumar - Finishing up the Georgia Tech online masters in CS.
Ben Doyle - Mixed work experience in NLP, full-stack development, and data analytics. Finishing undergrad at BYU in December 2022.
</br></br></br></br></br>
Contributing#
Warning
Disclaimer, please read! Contributing is 100% āfree laborā in the sense that Eric Riddoch owns the rootski project.
Please do or please donāt contribute based on what you think is best for your career and personal growth.
The value of contributing to rootski is in getting to work on part of a real product, having mentorship, and experimenting with tools you donāt use at your day job. Whether or not youāre experienced, that āmentorshipā looks exactly the way it would at a paid job: weāre a bunch of non-experts working mostly asynchronously, some of us knowing more about certain technologies than others.
For Eric, this project is about learning/mentoring and heād rather move slowly so that people can learn rather than focus on exploiting people adding new features.
Eric pays $20+/mo (sometimes $50) on this and earns nothing. If that ever changes, he will be clear about that. If anyone were to be paid to work on this, the project simply wouldnāt be possible. Eric is happy if the work weāre doing here does nothing more than give people career opportunities and help remove confusion about how ārealā software is built.
Many of the contributors make real sacrifices offering their time and mentorship working on this project. Please donāt criticize our motives. We want you do do whatās best for you. This model for building a product was inspired by this podcast interview with the creator of the Python discord channel.
Eric finds their intentions to be genuine. Please know that for over a year, Eric has āsunkā many evenings and weekends mentoring engineers and has seen no personal āreturn on investmentā outside of relationships; he will gladly continue to do so, time permitting.
Feel free to reach out to any of the āContributorsā or āFriendsā to ask them about their experience.
If you would like to contribute, please do the following things:
[ ] Join the Slack workspace and introduce yourself in
#general. Itās nice to knowWhere are you from?
Where are you now?
How long have you been coding/writing software/doing data science/doing what you do?
Did you go to school or do any other type of training?
Which parts of rootski are exciting to you?
What are some of your career and life goals?
How fast/slow would you like to onboard and contribute (roughly, it changes for all of us)
no need to be formal, weāre all friends here :D
[ ] Create a ClickUp account and ask to have onboarding tickets made for you in
#onboarding-and-training(in Slack).These tickets have you install the tools described below, get rootksi running, get access to GitHub and AWS, get familiar with the architecture and the ticket board, and other fairly straightforward things. Reading through the knowledge base, browsing the ticket board, reaching out to other in Slack, and watching the YouTube videos will get you there if you donāt want to wait for someone to create tickets for you. The tickets just help us know what youāve done so we can help you. There are often more ideas in Ericās head than there are tickets on the board, so feel free to reach out to Eric in Slack as well.
Please forgive Eric if he is slow to respond. He is usually overwhelmed with answering messages, reviewing PRs, onboarding people, writing tickets, writing social media posts promoting the contributors and their work, collaborating on the tickets themselves, pair programming, mentoring folks here and creating learning programs for them, and miscellaneous tasks that are hard to quantify. To say the least, there is certainly opportunity here to be a leader and own parts of the process that Eric would gladly hand off š¤£.
[ ] In the āWhat I Doā section of your Slack profile, enter your email address so we can see it when we hover over your name. Itās best if this is the email you use for GitHub and ClickUp. That makes it easier to add you.
</hr>
This codebase uses a mix of languages and tools. Depending on what area youād like to contribute to you only need to have a subset of the technologies installed.
To contribute to either the frontend, backend, or AWS infrastructure, you will need the following installed:
Install all the tools!#
Note
onboard.sh is an experimental script that will attempt to download many of things things. It should work on both Mac OS and the WSL. Note that the script is highly opinionated, and you may prefer to only reference it or just run bits and pieces.
Note
There are many technologies listed here, if you need more direction getting these set up or learning what these are, there is a page on the knowledge base to help you get up to speed.
Everyone
[ ]
git[ ]
git-lfsto download CSVs and other ālargeā files needed for development[ ]
docker[ ] Also install Docker Desktop if on Mac OS or Windows
[ ] If on Windows, set up the WSL and enable the WSL backend for Docker Desktop (does not work if you have less than Windows 10 Pro š¢)
[ ]
cmakeso you can use the āmakefileā[ ] Python 3.8 or 3.9 (
python --versionmust return 3.x.x, themakefilewonāt work if you have to usepython3);pyenvis the recommended way to install python and easily switch between python versions[ ] VS Code, PyCharm, or both
[ ] See the knowledge base for recommended VS Code extensions
Front end
[ ] NodeJS (
npm)
Infrastructure in AWS
Note
Certain backend tests require AWS access, but it is fine if those do not execute on your machine as you develop on the backend.
[ ] AWS CLI (version 2)
[ ] Configure a
rootskiprofile withaws configure --profile rootski. Ask Eric or an AWS admin for credentials for this command.
Optional
[ ] DBeaver, a desktop program for exploring the rootski Postgres SQL database
(one time) Validate your setup by running rootski#
Assuming you have each tool set up correctly, you should be able to run the following commands:
# clone this repository
git clone https://github.com/rootski-io/rootski.git
cd ./rootski/
# create a virtual environment called venv/
python -m venv ./venv/
# activate your virtual environment
source ./venv/bin/activate
# install pre-commit, git-lfs, DVC, xonsh, and other utilities needed to run makefile targets
make install
# run the frontend and backend locally in docker
make run
^^^ If this script works, you should be set to develop on rootski! Use one of the following sets of commands to develop on the backend or frontend.
Note
Explore the makefile or run
python -m venv ./venv/
source ./venv/bin/activate
make install
make help
to explore several utility commands that make running and working with the rootski project easier.
(each time) Develop on the frontend#
Run these commands each time you want to develop on the frontend.
cd path/to/rootski/
# start the backend API and database and add seed data to the database
source ./venv/bin/activate # required for pre-commit hooks to work!
make install
make build-images
make start-backend
make seed-dev-db
# start the frontend for development
cd ./rootski_frontend/
npm install # install node dependencies
npm run start # start the frontend development server
(each time) Develop on the backend#
Run these commands each time you want to develop on the backend.
Note
Explore the rootski_api/Makefile or run
python -m venv ./venv/
source ./venv/bin/activate
make install
make help
to explore various ways to run run the backend API with and without docker.
cd path/to/rootski/
# activate virtual environment and install global python requirements
source ./venv/bin/activate # required for pre-commit hooks to work!
make install
cd ./rootski_api/
make install # install backend specific python requirements
make run-local-db
cd ..
make seed-dev-db
cd ./rootski_api/
make run