Awesome
Table Of Contents
- Description
- Tech Stack
- Screenshots
- Local Building
- Config
- Future Enhancements
- How to Contribute
- License
Vue Expenses
A simple expenses tracking application built with VueJs and .NET
### Demo
- Username: test@demo.com
- Password: test
Please note that you can change the theme in the settings page and the data on the demo website will be reset at regular intervals
Tech Stack
Server Side
- .NET 5.0 for server side API
- Fluent Validation
- CQRS
- MediatR
- Entity Framework Core on SQLite.
- Dapper for querying
- Swashbuckle.AspNetCore for Swagger
- ASP.NET Core JWT Bearer Authentication for JWT authentication with support for refresh tokens.
- Serilog for logging
- Reference architecture ContosoUniversity
Client Side
- VueJs for client application
- Vuex with Vuex-persistedstate for state management
- Vue-router for client routing
- Axios for HTTP requests
- Vuetify as component framework
- Lodash for client side utility
- Vue-echarts (Echarts) for charting
Screenshots
Dashboard
<img src="/assets/images/Dashboard.png" alt="Vue Expenses Dashnoard" width="100%" />Expense Listing
<img src="/assets/images/Expenses.png" alt="Vue Expenses Listing" width="100%" />Stats
<img src="/assets/images/Stats.png" alt="Vue Expenses Stats" width="100%" />Settings
<img src="/assets/images/Settings.png" alt="Vue Expenses Settings" width="100%" />Profile
<img src="/assets/images/Profile.png" alt="Vue Expenses Profile" width="100%" />Mobile View
Local Building
Server
- Install .NET Core SDK
- Go to vue-expenses-api folder and run
dotnet restore
anddotnet build
- Run
dotnet run
to start the server athttp://localhost:5000/
- You can view the API reference at
http://localhost:5000/swagger
Client
- Go to vue-expenses-client folder and run
npm install
- Run
npm run serve
to start the client athttp://localhost:8080/
- Included database is seeded with dummy data and you can use
email: test@demo.com
andpassword: test
to login
Config
Server
ConnectionStrings
DefaultConnection
:Data Source=App_Data/expenses.db
- Where the sqlite db file is located, this can be changed in
appsettings.json
file
- Where the sqlite db file is located, this can be changed in
JwtSettings
SecurityKey
:A super secret long key to encrypt and decrypt the token
Issuer
:Issuer
Audience
:Audience
- The key, issuer and audience values to generate a jwt token, this can be changed in
appsettings.json
file
- The key, issuer and audience values to generate a jwt token, this can be changed in
PasswordHasher
Key
:Secret key to encrypt passwords
- The key to encrypt the passwords, this can be changed in
appsettings.json
file
- The key to encrypt the passwords, this can be changed in
Client
-
VUE_APP_BASE_URL
:http://localhost:5000/
- Base url to connect to the API, this can be changed in the
.env
file
- Base url to connect to the API, this can be changed in the
-
productionSourceMap
:false
- Generates source map file when building for production, this can be changed in
vue.config.js
file
- Generates source map file when building for production, this can be changed in
-
outputDir
: commented out by default- Where the built files will be copied over, this can be changed in
vue.config.js
file
- Where the built files will be copied over, this can be changed in
-
assetsDir
: commented out by default- Where the built minified css/js files will be copied over, this path is relative path from the
outputDir
, this can be changed invue.config.js
file
- Where the built minified css/js files will be copied over, this path is relative path from the
Future Enhancements
- Check project To do list
How to Contribute
- Clone repo
git clone https://github.com/simplyvinay/vue-expenses.git
- Create a new branch:
git checkout -b new_branch_name
- Make changes and test
- Submit Pull Request with description of changes