Skip to content
Frank Kim edited this page Jun 8, 2020 · 8 revisions

Project CM - Code Mentoring's Learning platform (The Duolingo of Coding)

Welcome to Project CM πŸ‘‹, we're glad you're here! This project was born from our community over at codementoring.co. The goal of this project is to bring free, fun education to anyone who wants to learn how to code.

❓Why this project exists

We differ a little to other approaches and platforms with our unique focus on storytelling. For us, stories are the bedrock of society and are how we've been learning as humans since the dawn of time. In this project, all education, features, new ideas and roadmaps have a focus on the story they tell. This is what makes Code Mentoring, and this platform special. We think you'll like it too 😊.

πŸ’» What this project uses for technology

  • Lerna: Project CM uses Lerna to manage all the packages in the repo. Lerna is a great way of handling multiple code bases in a single git repository.
  • Typescript: We love TS here at Code Mentoring. We feel it provides the flexibility of JS with extra safety and control. Perfect for large projects like this
  • React: A popular framework for building UIs that needs no introduction. We use React for all our front-end projects.
  • NestJS: Nest is a Node.js/GraphQL platform for building great APIs. It has great support for typescript too. We use this for all our APIs/backends.
  • GraphQL: GQL is a very innovative alternative to the standard REST API you might be used to. We use GQL as the communication layer between our front-end and back-end. (NestJS for API, and Apollo for React)
  • Apollo: Apollo is a great framework that NestJS uses to communicate with the front-end. We use Apollo Client in React to talk to the API.
  • Postgres Database: A very powerful, open source database used by the industry for projects of all sizes.

πŸ™‹β€β™€οΈ How you can get involved

Code Mentoring is an open community for all types and levels of develoeprs, designers, hackers and tinkerers. If you want to get involved, or see something you want to build (or even a bug fix), head over to our Contributing document for more information.

Please read our branching strategy in Contributing.

This is important if you want to contribute!

πŸ’¬ Communication

We use our Slack community (#project-cm channel) for discussions on the project, and Github projects for tracking issues.

πŸ“ž Weekly standup

We also have a weekly standup call at 6pm EST on Hangouts. Message one of the maintainers for access to slack or to get a meeting invite.


πŸ“¦ Installation and Setup

  1. Install Node.js. Check the website for information on how to install

  2. Install Yarn Check the website for information on how to install

  3. Clone the project. Git clone the project to somewhere you want to work on your local machine

  4. Install Docker This will be needed to run the database locally

    For WSL users, please check below for references

  • Docker Desktop is the easiest way to install: reference
  • Docker Toolbox is for older Mac and Windows systems that do not meet the requirements of Docker Desktop for Mac and Docker Desktop for Windows.
    E.g. Docker Desktop only supports Windows Enterprise edition so people used Toolbox for Windows Home edition: reference
  • To upgrade your WSL version to WSL2: reference
  1. Install dependencies
  • Inside the root of the project
    yarn install   // allow all dependencies to be installed      
  1. Starting database
  • Inside the root of the project
    yarn start-db  
  • packages/api
    yarn seed     // add fake/test data to the database
  1. Starting Client/API servers
  • packages/api
   yarn dev 
  • packages/client
    yarn dev 
  1. Setup is complete πŸŽ‰!

πŸ—Ί Getting around / project structure

Project CM is divided into 3 (currently) main packages.

πŸƒπŸΏβ€β™‚οΈ Running the project

API:

cd packages/api;
yarn dev

You can then open http://localhost:4000/graphql to test the API

Client:

cd packages/client;
yarn dev

Once the API is running, open http://localhost:8080 to load the front-end.


🎨 Design files

We use Figma for this project.


πŸ‘ Credits

This project is built and maintained by the community of Code Mentoring.

Built by the people, for the people