/velocity-dashboard

Simple prototype of taxi dashboard built on top of Nuxt.js and Express.js

Primary LanguageTypeScriptOtherNOASSERTION

Velocity


Simple prototype of taxi dashboard built on top of Nuxt.js and Express.js

Travis CI CodeFactor Dependencies dev dependencies npm type definitions

DescriptionDemoPagesInstallationTech stackDocumentationLicense

Description 🖊️

Beep beep. Meet Velocity – app for taxi company. It's not totally complete because doing this project alone is very difficult. The main goal for me was to learn how to use Vue with TypeScript in anticipation of the third version. Also, I never wrote the server side for applications. First tried Node.js, Mongo, Mongoose in action.

All components are ready on the client side, it remains only to write the logic. The server uses stubs to respond to pages. Only the logic for working with the user is ready: registration, authorization, password recovery, changing information about yourself, loading the avatar on S3.

For unit tests I used Jest. Tests cover only client components, approximately 80% of the entire code. Also, the application was not tested in most browsers, since I did not have a goal to make applications for production, I wanted to learn more about new things.

As a result, I realized that Vue in conjunction with TypeScript is still not reaching React. Poor IDE support, not working templates with prop types highlighting. It forced me to switch from templates to JSX, where I met new problems. Small community, poor documentation, etc.

Demo 👀

If app is taking a long time to load – please wait.

Heroku will spin down app to save resources, if it's not accessed for a certain amount of time. Thus the slowness is caused by having to start up the entire app again.

Application unavailable for now due to AWS free tier expiring. You can run it locally after filling the .env file with all keys.

Pages 📃

Page Description
Home Home page
Login This is a page where the user can log in, register, receive a password reset email
Reset password This is a page where the user enters a new password. A token is required that comes to the mail
Analytics This is a page with various graphs and statistics on the project
Vehicles This is a page with a table of all the vehicles that can be filtered
Reminders This is a To Do List Page
Map This is a page with current trips
Chat This is a page where you can communicate with customers
Settings This is a page where the user can change information about himself, choose a theme for the site
Not found Not found page for 404 error

Installation 🚀

Page Description
npm ci Install dependencies from package-lock.json
npm run dev Run dev server with HMR
npm run build Build app for production
npm run start Serve production build locally
npm run analyze Analyze webpack bundle
npm run test Run unit tests
npm run lint:write Lint and fix all files
npm run prettier:write Run prettier

Tech stack ⚙️

Frontend

Technology Description
TypeScript TypeScript is getting more and more popular in the Front-end environment. Myself, I have loved it since I used it for the first time. And I will continue using this in all my next projects for sure.
Vue.js My main JavaScript framework for building user interfaces and single-page applications.
Vuex A main state management library for Vue.js. This app is fine without Vuex, but @nuxt-auth module requires activated Vuex.
Vue Router I don't like built in Nuxt.js `pages` folder so I use my own router config.
Nuxt.js It simplifies the development of universal or single page Vue apps.
Nuxt property decorator Handy ES / TypeScript decorators for class-style Vue components in Nuxt.
JSX Vue.js doesn't have good TypeScript support using a template so I switched to JSX
MJML The only framework that makes responsive email easy
Chart.js Chart.js is an easy way to include animated, interactive graphs on website
Leaflet Open-source JavaScript library for mobile-friendly interactive maps
Jest Framework for unit testing
Storybook Storybook is an open source tool for developing UI components in isolation for React, Vue, and Angular. It makes building stunning UIs organized and efficient.

Backend

Technology Description
Node.js Node is a popular choice for building backends largely due to the fact that it shares the same base language, JavaScript, as many frontends.
Express.js The fast, unopinionated, minimalist web framework for node
MongoDB The most popular database for modern apps
Mongoose Mongoose provides a straight-forward, schema-based solution to model my application data.
Yup Dead simple Object schema validation
AWS S3 Object storage for users static files

Documentation ⚙️

License 👨‍⚖️