Giter Site home page Giter Site logo

xivqn / cp-book-tracker Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 655 KB

Single-page application (SPA) that helps users track their progress while studying the Competitive Programming book authored by Felix Halim. It serves as a valuable tool for individuals who are interested in enhancing their skills in competitive programming and want to keep track of their learning journey.

Home Page: https://cp-book-tracker.netlify.app/

License: GNU General Public License v3.0

JavaScript 13.38% HTML 29.26% TypeScript 55.31% CSS 2.05%
competitive-programming cpbook uva-online-judge angular typescript online-judge

cp-book-tracker's Introduction

Netlify Status

Bugs Vulnerabilities Duplicated Lines (%) Coverage

CP Book Tracker

CP Book Tracker is a Single Page Application (SPA) built for tracking progress on the Competitive Programming Book written by Felix Halim.

Description

As an enthusiast of competitive programming, I was looking for some incentive to progress on the CP Book. Since the uHunt webpage provides a compact interface for that book's problems, I decided to create a more visual and intuitive version of that, using Node.js, Angular and TypeScript to deepen into web application development.

As for now, the CP Book Tracker application has a live demo deployed using the Netlify service. However, it can be built and run locally, see details below.

Table of Contents

Installation

If you just want to use the application, you can use the live version.

Otherwise, you can either run it locally or build it for production. Follow the steps to clone the repository and install its dependencies:

  1. Open a terminal.
  2. If you don't have Node.js installed on your machine, install it using sudo apt-get install -y nodejs, if you use a Debian/Ubuntu-based distro. For other options, check https://nodejs.org/en/download and https://nodejs.org/en/download/package-manager
  3. Clone this repository using git clone https://github.com/xIvqn/cp-book-tracker.git.
  4. Go to the angular project folder using cd cp-book-tracker/.
  5. Initialize the node project using npm i.
  6. Install Angular CLI globally using npm i -g @angular/cli.

Now with everything set up, you might want to run the development server or build the application for production and then deploy it.

Development server

With the development server, the application will be reloaded with any changes you make to its source files. Follow the steps for running it:

  1. In a terminal, while on the Angular project folder, run the server with ng serve.
  2. Now you've got the Angular application running on https://localhost:4200.

Production

Once you have the project built, you can now deploy it. Follow the steps for building it:

  1. In a terminal, while on the Angular project folder, run the server with ng build.
  2. The build artifacts will be stored in the dist/ directory.

Desktop Application

Since version 1.1.0, you can now run the CP Book Tracker app as a desktop application. You can find it in releases, under the assets section of the desired version.

For using them, you just have to download the desired binaries and run the executable.

Build instructions

Once you have the repository cloned and the project initialized (see installation section for further instructions), you just need to run npm run package:[platform] in a terminal while on the project directory replacing [platform] with the desired platform to build the binaries for it. This argument can be one of the following:

  • For Linux distros use package:linux.
  • For Windows use package:win.
  • For MacOS (Darwin) use package:osx.

Features

  • Shows problems from the Competitive Programming book.
  • Switch within the first 3 editions of the book.
  • User tracking on onlinejudge website.
  • Indicators on starred problems.
  • Visual feedback on solved problems.
  • Top 3 verdicts display for each problem.
  • Quick Submit, uDebug and PDF download buttons for each problem.
  • Solved and total problems counter for chapters and sections.
  • Visual feedback on completed chapters and sections.
  • Collapsing containers for chapters.

Usage

Right after opening the web application, you can check the chapters of the 3rd edition of the book. On the navigation bar, you can switch editions with the dropdown or search for a specific user. Also, you can extend a chapter to see its sections, problem sets and individual problems.

Chapters and sections have an indicator of how many problems have been solved in each category. On the other hand, problems are highlighted with different colors, depending on their state:

  • Yellow problems are starred ( * ) in the Competitive Programming book, indicating they are strongly recommended to be solved.
  • Green problems are already solved by the user.
  • Grey problems have neither been solved, nor starred.

To highlight the solved problems in green, you must check for a valid username of the onlinejudge website. You can input your username in its field, on the top bar. After that, you will have your solved problems highlighted in green.

Also, each problem card has the DACU, which indicates the Different ACcepted Users for that problem, and the rates for the most indicative verdicts:

  • ACs indicates the number of ACcepted solutions.
  • WAs indicates the number of Wrong Answers submitted.
  • TLEs indicates the number of submissions with the Time Limit Exceeded.

Tests

Planned to do.

How to Contribute

Work in progress. More information will be added soon to this section.

Credits

Thanks to Felix Halim for writing all 4 editions of the Competitive Programming book, and both uHunt website and uHunt API.

Also, thanks to uDebug for being such a useful website.

Collaborators

Currently, I, xIvqn, am the only collaborator on the project.

If you want to contribute, feel free to leave a pull request from your fork, or either leave an issue if you find one! If you need more information about it, check the How to Contribute section.

License

Licensed under the GNU General Public License v3.0.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.