The African Impact Challenge is a non-profit investing in aspiring young African entrepreneurs. Participants work on building market innovations that tackle their country’s challenges with technology. The motivation of this project is to provide a user-friendly community and e-learning platform for the moderators and participants of the challenge.
- Individual and organization profiles.
- Discussion board for networking.
- Direct text messaging.
- Learning materials and deliverables hosting.
- Real time conferencing.
- Node.js 16.2.0 (npm 7.13.0)
- MongoDB Community Server 4.4.6
- Redis 6.2
Due to a limitation with the NestJS CLI Plugin, we were forced to use Git symlinks to link common types to the backend package. Git symlinks work fine without any setup macOS and Linux but may require the setup below on Windows.
-
Run
git config --global core.symlinks true
. -
Enable developer mode (Settings App → Update & Security → For developers → Developer Mode) or run Git as administrator when working with the repository.
After setting up the above requirements, clone the repository and run
npm install --legacy-peer-deps
(argument needed due to
Storybook issue) to
download the libraries this project relies on followed by
npm run build --workspace=common
to build code shared between the frontend and
backend of the project.
To run the backend locally, set up a MongoDB server on the default port using the
official documentation
then execute npm run start --workspace=server
.
To access the backend documentation, visit localhost:3001/docs
.
To run the frontend locally, execute npm run dev --workspace=client
.
To access the frontend documentation, execute
npm run storybook --workspace=client
.
TBD
This project uses npm workspaces to separate code and prevent issues such as unintentional dependencies and build system conflicts.
server
contains code for the project's Express backend.
client
contains code for the project's React frontend.
common
contains code meant to be shared between the frontend and backend
(request & response types, validation schemas, etc).
The following procedure should be followed when contributing to the project.
-
Checkout a new branch from
develop
and name it using the ID of the Jira entry you are implementing (e.g.DEV-000
). -
After the new feature has been implemented and tested in the feature branch (e.g.
DEV-000
), create a pull request that merges the feature branch back intodevelop
. -
Another member from the team should review the pull request, requesting changes as necessary.
-
When both the contributor and code reviewer are satisfied with the pull request, it can be merged into
develop
. -
On release days (sprint deadlines), a member from the team will create a pull request that merges
develop
intomain
. -
Two or more members from the team (can include the member who created the pull request) will review the pull request, requesting changes as necessary.
-
When at least two members from the team are satisfied with the pull request, it can be merged into
main
.