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

https://github.com/youssefelghamour/CodeWave

Front-end dashboard built with React for students to track their courses, progress, scores, and view school updates and news.
https://github.com/youssefelghamour/CodeWave

es6 javascript normalizr react react-redux react-router-dom reactjs redux redux-middleware redux-thunk webpack

Last synced: 9 months ago
JSON representation

Front-end dashboard built with React for students to track their courses, progress, scores, and view school updates and news.

Awesome Lists containing this project

README

          

![Dashboard1](./client/src/assets/hero1.png)

[![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?logo=mongodb&logoColor=white)](#)
[![Express.js](https://img.shields.io/badge/Express.js-%23404d59.svg?logo=express&logoColor=%2361DAFB)](#)
[![React](https://img.shields.io/badge/React-%2320232a.svg?logo=react&logoColor=%2361DAFB)](#)
[![Redux](https://img.shields.io/badge/Redux-764ABC?logo=redux&logoColor=fff)](#)
[![NodeJS](https://img.shields.io/badge/Node.js-6DA55F?logo=node.js&logoColor=white)](#)

# CodeWave School Website

The **`CodeWave School Website`** is a school portal designed to help students track their academic progress and stay informed. It allows students to log in, view their courses, monitor their progress and scores, and keep up with the latest news and updates from the school.

## Features

- **Student Login**: Secure authentication for students to access their personalized dashboard.
- **Course Management**: Students can view and track their enrolled courses, assignments, and scores.
- **Progress Tracking**: Real-time tracking of academic performance and grades.
- **School Updates**: Displays news, announcements, and updates from the school.
- **Responsive UI**: A dynamic layout that adapts to both desktop and mobile devices.

## Technologies Used

- **JavaScript (ES6)**: Language used for building the dashboard.
- **React**: Frontend JavaScript library for building the user interface.
- **Redux**: State management library for handling user data and application state.
- **React Router**: For dynamic routing within the application.
- **Aphrodite**: Library for managing inline styles and dynamic styling in React.
- **Redux Thunk**: Middleware for handling async actions in Redux to fetch data from the API.
- **Normalizr**: Data normalization library for the data fetched from the API.
- **Immutable.js**: Data structures for managing state immutability.
- **Webpack**: Module bundler for JavaScript applications.
- **MongoDB**: NoSQL database used to store application data.
- **Node.js**: JavaScript runtime environment for building the backend.
- **Express**: Web framework for building the backend API with Node.js.

## Setup

1. Clone the repository:

```bash
git clone https://github.com/youssefelghamour/CodeWave.git
```

2. Navigate to the server directory:

```bash
cd CodeWave/server
```

3. Install server dependencies:

```bash
npm install
```

4. Set up the database (inserts data into the database):

```bash
node utils/dbSetup.js
```

5. Start the API:

```bash
node api/server.js
```

6. In a separate terminal, navigate to the client directory and install dependencies:

```bash
cd CodeWave/client
npm install
```

7. Start the React app:

```bash
npm start
```

8. Visit the app at `http://localhost:8080`.

9. You can visit the API help page at `http://localhost:5000`.

## Demo Video

https://github.com/user-attachments/assets/696b4831-04a2-4e3a-a542-8bdd7baaf242

## Usage

Once CodeWave is set up, you can use the following steps to interact with the platform:

- Sign up as one of theregistered students (example):
- **email:** youssefgr@email.com
- **password:** password1
- Sign up as the admin:
- **email:** admin@email.com
- **password:** admin
- Admins can access the dashboard to manage data, create, delete, and update student profiles, courses, and other admin-level operations.

## Authors

- **Youssef El Ghamour** - [GitHub](https://github.com/youssefelghamour) | [LinkedIn](https://www.linkedin.com/in/youssefelghamour/)

![Dashboard1](./client/src/assets/hero2.png)