/fina

Fabulous and Interactive Numerical Analysis calculator.

Primary LanguageTypeScript

| Home | ภาษาไทย |

FINA

Fabulous and Interactive Numerical Analysis Calculator

Tech stack

In FINA, we use

  • Vuejs to manage our frontend application.
  • Buefy to manage our frontend application's stylings.
  • mathjs to manipulate and calculate expression strings.
  • d3 to create beautiful graph representations.
  • ESLint to keep our TypeScript stylings constant throughout the project.
  • Stylelint to keep our SCSS stylings constant throughout the project.
  • Vue Katex to render mathmatical expressions.
  • Fastify to manage our backend API.

Our main language of development is TypeScript

Project setup

This project requires minimum of

  • Nodejs v12,
  • npm v7

You can download and install Nodejs from its website here.

You can install npm v7 by running the following command.

npm install -g npm@7.17.0

You also need @vue/cli

npm install -g @vue/cli

Install project's dependencies

npm install --legacy-peer-deps

from the root of the project

Getting started

Run these commands to start developing from the root directory.

Terminal 1 Terminal 2 Terminal 3
npm run serve:common npm run serve:functions npm run serve

The web application will pop up at http://localhost:8080 and the API will pop up at http://localhost:3000

Long term goals

Grapher component

  • Provides support for graphing incontinuous graph like $ f(x) = \frac{1}{x} $
  • Provides better graph scaling. Currently it's not very consistent when you are plotting high frequency graph.

Frontend

  • Adds second semester's topics.
    • Gauss Seidel.
    • Jacobi.
    • Newton's Divided Difference
    • Newton's Forward Difference
    • Newton's Backward Difference
    • Lagrange Polynomial
    • Regression Equation
    • Trapezoidal Rule
    • Simpson's 1/3 Rule
    • Simpson's 3/8 Rule
    • Romberg
    • Euler
  • Provides consistent error message that have meanings.
  • Implements refresh-proven form input, or store user inputs in cookie.
  • Implements membership system.
  • Provides i18n support for multiple languages website using vue-i18n
  • Improves page layout and explanations.
  • Deploy the website on Firebase
  • Adds contributors page.
  • Combines answer pages into one.

Backend

  • Extract redundant preValidation hook into separate file or global hooks.
  • Refactor some of controversial preValidation hooks.
  • Adds at least Basic auth for calling the API.
  • Host the API in Google Cloud Run.

Deployments

install Firebase CLI

npm i -g firebase-tools
firebase login

Lints and fixes files

Run

npm run lint

from the root of the project. it will trigger all the npm run lint command in all sub-directories, reporting all the errors it found to you.

Run

npm run fix

from the root of the project to lint and attempt to fix some errors in all the project.