-
Notifications
You must be signed in to change notification settings - Fork 16
Home
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.
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 π.
- 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.
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!
We use our Slack community (#project-cm
channel) for discussions on the project,
and Github projects for tracking issues.
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.
-
Install Node.js. Check the website for information on how to install
-
Install Yarn Check the website for information on how to install
-
Clone the project. Git clone the project to somewhere you want to work on your local machine
-
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
- Install dependencies
- Inside the root of the project
yarn install // allow all dependencies to be installed
- Starting database
- Inside the root of the project
yarn start-db
- packages/api
yarn seed // add fake/test data to the database
- Starting Client/API servers
- packages/api
yarn dev
- packages/client
yarn dev
- Setup is complete π!
Project CM is divided into 3 (currently) main packages.
-
api
: The NestJS API package that powers all our data (api.codementoring.co) -
client
: The React package that provides the UI/front-end for the project (learn.codementoring.co) -
ui
: A React project for all the UI components to live. (Will eventually be reused in the WWW/marketing site)
cd packages/api;
yarn dev
You can then open http://localhost:4000/graphql to test the API
cd packages/client;
yarn dev
Once the API is running, open http://localhost:8080 to load the front-end.
We use Figma for this project.
This project is built and maintained by the community of Code Mentoring.
Built by the people, for the people
Packages
Issues/PRs
API
Testing
Contributing