Skip to content

Commit

Permalink
Add documentation to the README File (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
moazelsawaf authored Jun 30, 2023
1 parent f7ea4cc commit 644feee
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 2 deletions.
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{
"cSpell.words": [
"cloudnativebasecamp",
"Codecov",
"dijkstras",
"HELOD",
"Metwally",
"OHELOD",
"أهلاً",
"وسهلاً"
Expand Down
130 changes: 128 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,128 @@
A sample command-line application with an entrypoint in `bin/`, library code
in `lib/`, and example unit test in `test/`.
<img src="https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/blob/documentation/docs/assets/banner.png" width="100%" alt="Repository Banner" />
<h3 align="center">
Cloud Native Base Camp<br>
Algorithms Analysis and Design from scratch<br>
Dart Implementation
</h3>

<p align=" center">
<a href="https://codecov.io/gh/moazelsawaf/cloudnativebasecamp_algo_01_dart">
<img
src="https://codecov.io/gh/moazelsawaf/cloudnativebasecamp_algo_01_dart/branch/main/graph/badge.svg?token=T90IR6JI53" />
</a>
<a href="https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart">
<img src="https://img.shields.io/github/stars/moazelsawaf/cloudnativebasecamp_algo_01_dart.svg?style=flat&logo=github&colorB=ffcc00&label=stars"
alt="Star on GitHub">
</a>
<a href="https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/issues" rel="ugc"><img
src="https://img.shields.io/github/issues/moazelsawaf/cloudnativebasecamp_algo_01_dart.svg?color=DF1304"
alt="GitHub Open Issues"></a>
<a href="https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/commits/main" rel="ugc"><img
src="https://img.shields.io/github/last-commit/moazelsawaf/cloudnativebasecamp_algo_01_dart.svg"
alt="GitHub Last Commit Date"></a>
</p>

---

## 💡 Overview

This repository provides a **(Not Official) Dart Implementation with 100% test coverage** for [Algorithms Analysis and Design from scratch](https://cloudnativebasecamp.com/courses/algo-01/) course provided by [Cloud Native Base Camp](https://cloudnativebasecamp.com/) platform and instructed by [Eng. Ahmed Metwally](https://www.linkedin.com/in/metwally/) 💙❤

The course comprises 30 instructional videos on algorithms, beginning with fundamental concepts and progressing to an average level suitable for software development work 👩🏻‍💻👨🏻‍💻

Visit the above hyperlinks for more information about the course, the platform ,and the instructor ✅

## 📖 Repository Philosophy

### The repository is designed with the following key points in mind:

- 📂 All the implementation files are located under the `lib/` folder and the test files are located under the `test/` folder.

- 📹 Each code video has its own folder with the same name of the video (code videos are the videos that have code implementation in them and they are all postfixed with "- Code" in the name).

- 📝 The code is written in a way that is almost exactly to the code in the videos.

- 🏋🏻‍♀️ The code of the requested exercises is provided and located in the same folder of the code video that requested it and the file name is prefixed with "exercise_".

- 🧪 Each file has its own unit test file with the same name postfixed with "_test" as per the Dart convention.

- 📊 The test coverage for the whole repository is 100% and should always be 100%.

- 🔢 Each algorithm has at least two test cases, and always has the same test cases used in the videos.

- 🚧 Each video has its own code separated from the other videos, so that if two algorithms shares some code, it is duplicated in both files to keep them isolated from each other (for example, graph traversal algorithms and merge sort algorithm).

## 🕹 How to Try?

You can play around with all the code in the repository by using it in `playground.dart` file located under the `bin/` folder 🎮

You can also write tests for your code in the `playground_test.dart` file located under the `test/` folder 🔬

## 🧪 Code Testing

The code in the repository has more than **50 unit tests** with **test coverage of 100%** and should always be 100%.

All the tests are located under the `test/` folder and they are all written with **AAA (Arrange, Act, Assert) pattern** to make them more readable, maintainable, and easier to understand, to learn more about AAA pattern, visit [this article](https://medium.com/@pjbgf/title-testing-code-ocd-and-the-aaa-pattern-df453975ab80) 📝

### Running Tests

To run all the tests, run the following command:

```bash
dart test
```

To run a specific test file, run the following command:

```bash
dart test test/<test_file_name>.dart
```

To run the tests with coverage report, run the following command (Must have Flutter SDK installed):

```bash
flutter test --coverage
```

### Coverage Report

The coverage report for this repository is uploaded automatically to [Codecov by Sentry](https://about.codecov.io/) after each commit to the `main` branch to be analyzed, archived, and hosted for everyone to check along with more powerful features 💪🏻

The latest coverage report can be found [here](https://codecov.io/gh/moazelsawaf/cloudnativebasecamp_algo_01_dart), and he following graph shows the latest coverage report for the repository 📊
<br><br>
<img src="https://codecov.io/gh/moazelsawaf/cloudnativebasecamp_algo_01_dart/branch/main/graphs/icicle.svg?token=T90IR6JI53">

## 💙 About Dart

Simply, **Dart is a client-optimized language for fast apps on any platform**

It is a programming language that was developed by Google in 2011. It is designed to be expressive, concise, and scalable for web, mobile, and desktop applications. Dart can be compiled to native code, JavaScript, or run on a virtual machine 💙

Dart is closely related to Flutter, which is a framework for building cross-platform user interfaces with Dart. Flutter allows developers to create beautiful and responsive apps that run on iOS, Android, Windows, Linux, and the web with a single codebase 📱💻

Dart has many features that make it a powerful and productive language for modern app development. Some of these features are 💪🏻:

- Strong typing with type inference and null safety
- Support for both object-oriented and functional programming paradigms
- Asynchronous programming with futures, streams, and async/await
- Generics, mixins, extension methods, and metadata
- Native interoperability with C and JavaScript
- Hot reload and hot restart for fast development cycles
- A comprehensive set of libraries and packages for common tasks
- And much more!

To learn more about Dart, visit the [official website (dart.dev)](https://dart.dev/)

## 💪🏻 Contribution Guide

I would be happy to have your contributions 💙

If you have a bug, suggestion, or a question, please fill an [Issue](https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/issues) 📄

If you fixed a bug or added something useful, please make a [Pull Request](https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/pulls) 📩

<a href="https://github.com/moazelsawaf/cloudnativebasecamp_algo_01_dart/graphs/contributors">
<img src="https://contrib.rocks/image?repo=moazelsawaf/cloudnativebasecamp_algo_01_dart" />
</a>

Made with [contrib.rocks](https://contrib.rocks).
Binary file added docs/assets/banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 644feee

Please sign in to comment.