Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tunapanda/wikonnect

Wikonnect seeks to bridge the digital divide through the provision of digital literacy skills. Management support through Asha (www.asha.io).
https://github.com/tunapanda/wikonnect

education emberjs h5p koajs postgresql

Last synced: about 24 hours ago
JSON representation

Wikonnect seeks to bridge the digital divide through the provision of digital literacy skills. Management support through Asha (www.asha.io).

Awesome Lists containing this project

README

        

[![All Contributors](https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square)](#contributors)

Welcome to Wikonnect 👋



Version

Documentation


License: MIT


Issues


Forks


Stars

# Wikonnect

Wikonnect is an open-source e-learning platform designed to allow anyone to learn, create educational content, and
contribute to building the platform as a designer or a software developer. The initial courses offered on the platform will be around digital literacy, to get more people
using the internet in more productive ways. Developed by [Tunapanda Institute](https://tunapanda.org/) in Nairobi, Kenya. The original platform (called 'Swag') was used to provide technology, design, and business training in low-income communities with low
bandwidth.

Come say hi 👋 on our [Wikonnect Community Discord Server!](https://discord.gg/tT9Ug6D)

Getting Started
--
The frontend is developed using Ember.js. We
recommend [getting started](https://guides.emberjs.com/release/getting-started/quick-start/) with Ember by going through
the tutorials.

The backend is developed using [KoaJS](https://koajs.com/). The API docs are hosted
at [tunapanda.github.io/wikonnect](https://tunapanda.github.io/wikonnect)

## Wikonnect Tech Stack

- [EmberJS](https://guides.emberjs.com) for frontend.
- [KoaJS](https://koajs.com/) for backend API.
- [Objection.js](https://vincit.github.io/objection.js/) as an ORM
and [Knex.js](https://gist.github.com/NigelEarle/80150ff1c50031e59b872baf0e474977) for building SQL queries
- [PostgreSQL](https://www.postgresql.org/) for main persistence storage.
- [chai](https://www.chaijs.com/) for backend unit tests.
- [Cypress](https://cypress.io) for frontend integration tests.
- [Yarn](https://yarnpkg.com/) project package manager.

#### Optional:
- [ElasticSearch](https://www.elastic.co/) for search and indexing services
- [Docker](https://www.docker.com/) for containerization

## Development setup

- Clone the project using [Git](https://git-scm.com/) into your workspace:

```
git clone https://github.com/tunapanda/wikonnect.git
```

- Proceed to set up the development environment [manually](#manual-project-setup) or using [Docker](#docker-project-setup).

### Docker project setup

---

#### Prerequisites

- Docker Engine

##### Docker engine installation

- [Ubuntu installation](https://docs.docker.com/engine/install/ubuntu/)
- [Fedora installation](https://docs.docker.com/engine/install/fedora/)
- [Debian installation](https://docs.docker.com/engine/install/debian/)
- [Mac installation](https://docs.docker.com/docker-for-mac/install/) - Installed as docker desktop
- [Windows installation](https://docs.docker.com/docker-for-windows/install/) - Installed as docker desktop

##### Starting a development server

1) If your Docker engine instance is running on your terminal, navigate into the **project root directory**:

```
cd wikonnect/
```

2) **Copy** the `.env-sample` configuration file to `.env`. (Never commit this file)

3) Update the above `.env` file configurations to match your desired setup.

4) Build and run the project container services using the `docker-compose` command:
```
docker-compose up --build
````

**NOTE** The ``NODE_ENV`` should be set as ``development`` to allow live reload on code changes.

### Manual project setup

---

#### Prerequisites

- Node.js v14.16.0
- PostgreSQL database server

##### Setting up Node.js

Follow instructions on how to download and install Node.js based on your operating system from
the [official Node.js website](https://nodejs.org/en/download/).

Ensure you install Node v14.16.0

##### Setting up PostgreSQL

- [Ubuntu installation](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04)
- [Fedora installation](https://fedoraproject.org/wiki/PostgreSQL)
- [OSX installation](https://www.codementor.io/engineerapart/getting-started-with-postgresql-on-mac-osx-are8jcopb)
- [Windows installation](http://www.postgresqltutorial.com/install-postgresql/)

Create a postgres user (with password), and set up a database for the project (Don't forget to grant privileges to the user
on the database!). :

```SQL
=# CREATE USER wikonnect_user WITH PASSWORD 'password';
=# CREATE DATABASE wikonnect;
=# GRANT ALL PRIVILEGES ON DATABASE wikonnect TO wikonnect_user;
```

#### Starting a development server

Install the project-wide dependencies on the **root project directory**...

```
cd wikonnect/
yarn
```

##### Backend (API) setup

---

Backend set up steps:

1) Navigate into the **server** directory
```
cd server/
```
2) Install the backend dependencies
```
yarn
```

3) **Copy** the database configuration file `server/config/db.example.js` to `server/config/db.js`

4) Replace the database configuration to match your development database. (Do not use the development database in a
production environment)

```js
development: {
host: 'localhost',
database: 'my_database',
user: 'my_user',
password: 'my_password',
}
```
5) **Copy** the email configuration file `server/config/email.example.js` to `server/config/email.js`

6) You can use Mailtrap for an email sandbox environment. Set up a [mailtrap.io](https://mailtrap.io/) account and copy the credentials provided for Nodemailer setup into the development section of the `server/config/email.js` file eg:

```js
development: {
provider: "smtp.mailtrap.io",
auth: {
user: "xxxxxxxxxxxx",
pass: "xxxxxxxxxxxx",
},
defaultFrom: process.env.FROM_EMAIL_ADDRESS,
},
```

5) Assuming the Postgres server is ready and above [configuration](server/config/db.js) credentials are correct, run the
latest migrations (defined in `server/migrations`):
```
yarn db:init
```

6) **Optionally**, one can populate the database with dummy data (defined in `server/db/seeds`) by running:
```
yarn db:seed
```

7) If the above steps were successful, you can finally start the backend server
```
yarn start
```

**NOTE**: You can safely ignore any Elasticsearch connection error.

##### Frontend setup

---
Frontend set up steps:

1) Navigate into the **frontend** directory
```
cd frontend/
```
2) Install the frontend dependencies
```
yarn
```
3) Start the frontend server
```
yarn start
```
4) If the above steps were successful, navigate to your favorite browser and go to http://localhost:4200/ to see the running
app.

***NOTE***: For easy Ember addons installation and project files generation using available blueprints, we highly
recommend installing [Ember CLI](https://github.com/ember-cli/ember-cli) globally:
```
yarn install -g ember-cli
```

## UI/UX Designs

---

### Learn

- [Authentication](https://xd.adobe.com/view/ce0b8ac3-0e43-4ccd-ad2f-ca86803f522f-9b58/)
- [Password Reset](https://xd.adobe.com/view/c8cdd600-0ec7-4557-a497-7bcf80177a5e-9d9e/)
- [Course Builder](https://xd.adobe.com/view/9b6c6240-2411-40da-bc02-39c409e62f88-ce3f/)
- [Single Chapter Page](https://xd.adobe.com/view/87f725be-e199-4bf6-bd01-7f4ead3c9e6c-d2a4/)

### Teach
- [Teach landing page (unauthenticated)](https://xd.adobe.com/view/f3336f85-ec94-47a0-9ed1-1c16d09fd346-a660/)
- [Chapter Creation](https://xd.adobe.com/view/7b76ab64-b1e6-4c55-9add-3e15624234c7-2e25/)
- [Dashboard for Content Creators](https://xd.adobe.com/view/0ef6c435-70eb-4508-95df-5899d2821970-5ba5/)

### Admin Dashboard
- [Content Approval](https://xd.adobe.com/view/8e585111-f208-4fd8-9c09-f0f71221b61f-db0b/)
- [Leaderboad and Badge Management](https://xd.adobe.com/view/744fa986-7674-4c71-b77a-fdb50a4e806b-211c/)
- [User Management](https://xd.adobe.com/view/743f7d0d-7153-4842-a024-73168a04efea-216c/)
- [Monitoring and Evaluation Survey Managment](https://xd.adobe.com/view/cdf5137c-29dc-4154-b5d3-166a2daa699c-98a6/)

## Contributing

- You should join our [Discord](https://discord.gg/tT9Ug6D) server to get connected with people interested in this
project and to be aware of our future announcements.
- Please read the
suggested [steps to contribute code to the Wikonnect project](https://github.com/tunapanda/wikonnect/blob/master/CONTRIBUTING.md)
before creating issues, forking, or submitting any pull requests.

## License

This project is licensed under MIT. See the [license](https://github.com/tunapanda/wikonnect/blob/master/LICENCE.md) file for details

## Authors 🧙

### Developers

- **[Moses Okemwa](https://github.com/mosesokemwa)** - _Lead Backend developer and maintainer_
- **[Proverbial Ninja](https://github.com/proverbial-ninja)** - _Lead Frontend developer and maintainer_
- **[Murage Martin](https://github.com/mimidotsuser)** - _Full Stack Developer_
- **[Brian Marete](https://github.com/brianmarete)** - _Frontend Developer_

### UI/UX Designers
- **[Yego Kelvins](https://www.behance.net/kevinsyego)**
- **[Nathan Macharia](https://github.com/macharian8)**
### Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Moses Okemwa

💻 🎨

Kiki

💻 🎨

mrlarso

💻

Jake Lee Kennedy

💻

Benson Muite

💻

Cliff Owino

💻

Mutugi

💻



Avic Ndugu

💻

BonfaceKilz

💻




Happy Coding ❤︎