Skip to content

Commit b48788b

Browse files
committed
added read me and license
1 parent 67c4153 commit b48788b

File tree

12 files changed

+169
-27
lines changed

12 files changed

+169
-27
lines changed

LICENSE

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2019 Vinay
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

README.md

+145
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
## Table Of Contents
2+
3+
- [Description](#Vue-Expenses)
4+
- [Demo](#demo)
5+
- [Tech Stack](#Tech-Stack)
6+
- [Server Side](#Server-Side)
7+
- [Client Side](#Client-Side)
8+
- [Screenshots](#Screenshots)
9+
- [Local Building](#Local-Building)
10+
- [Config](#Config)
11+
- [Future Enhancements](#Future-Enhancements)
12+
- [How to Contribute](#How-to-Contribute)
13+
- [License](#License)
14+
15+
# Vue Expenses
16+
17+
A simple expenses tracking application built with VueJs and .NET Core
18+
19+
### Demo
20+
21+
[Vue Expenses](https://vue-expense.herokuapp.com)
22+
- Username: `[email protected]`
23+
- Password: `test`
24+
25+
Please note that you can change the theme in the setting page and the data on the demo website will be reset at regular intervals
26+
27+
# Tech Stack
28+
29+
### Server Side
30+
31+
- [.NET Core 3.0](https://github.com/dotnet/core) for server side API
32+
- [Fluent Validation](https://github.com/JeremySkinner/FluentValidation)
33+
- CQRS
34+
- [MediatR](https://github.com/jbogard/MediatR)
35+
- [Entity Framework Core](https://github.com/aspnet/EntityFrameworkCore) on SQLite.
36+
- [Dapper](https://github.com/StackExchange/Dapper) for querying
37+
- [Swashbuckle.AspNetCore](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) for Swagger
38+
- [ASP.NET Core JWT Bearer Authentication](https://github.com/aspnet/Security) for [JWT](https://jwt.io/) authentication with support for [refresh tokens](https://tools.ietf.org/html/rfc6749#section-1.5).
39+
- [Serilog](https://github.com/serilog/serilog) for logging
40+
- Reference architecture [ContosoUniversity](https://github.com/jbogard/ContosoUniversityDotNetCore)
41+
- Feature folders and vertical slices
42+
43+
### Client Side
44+
45+
- [VueJs](https://github.com/vuejs/vue) for client application
46+
- [Vuex](https://github.com/vuejs/vuex) for state management
47+
- [Vue-router](https://github.com/vuejs/vue-router) for client routing
48+
- [Axios](https://github.com/axios/axios) for HTTP requests
49+
- [Vuetify](https://github.com/vuetifyjs/vuetify) as component framework
50+
- [Lodash](https://github.com/lodash/lodash) for client side utility
51+
- [Vue-echarts](https://github.com/ecomfe/vue-echarts) for [Echarts](https://echarts.apache.org/en/index.html)
52+
53+
# Screenshots
54+
55+
### Dashboard
56+
57+
<img src="/assets/images/Dashboard.png" alt="Vue Expenses Dashnoard" width="100%" />
58+
59+
### Expense Listing
60+
61+
<img src="/assets/images/Expenses.png" alt="Vue Expenses Listing" width="100%" />
62+
63+
### Stats
64+
65+
<img src="/assets/images/Stats.png" alt="Vue Expenses Stats" width="100%" />
66+
67+
### Settings
68+
69+
<img src="/assets/images/Settings.png" alt="Vue Expenses Settings" width="100%" />
70+
71+
### Profile
72+
73+
<img src="/assets/images/Profile.png" alt="Vue Expenses Profile" width="100%" />
74+
75+
### Mobile View
76+
- [Dashboard](/assets/images/mobile/dashboard.png)
77+
- [Stats](/assets/images/mobile/Stats.png)
78+
79+
# Local Building
80+
81+
### Server
82+
83+
- Install [.NET Core SDK](https://dotnet.microsoft.com/download)
84+
- Go to vue-expenses-api folder and run `dotnet restore` and `dotnet build`
85+
- Run `dotnet run` to start the server at `http://localhost:5000/`
86+
- You can view the API reference at `http://localhost:5000/swagger`
87+
- Included database is seeded with dummy data and you can you the same credentials as the demo site to login
88+
89+
### Client
90+
91+
- Go to vue-expenses-client folder and run `npm install`
92+
- Run `npm run serve` to start the client at `http://localhost:8080/`
93+
- The application is seeded with dummy data and you can use `email: [email protected]` and `password: test` to login
94+
95+
# Config
96+
97+
### Server
98+
99+
#### ConnectionStrings
100+
101+
- `DefaultConnection`: `Data Source=App_Data/expenses.db`
102+
- Where the sqlite db file is located, this can be changed in `appsettings.json` file
103+
104+
#### JwtSettings
105+
106+
- `SecurityKey`: `A super secret long key to encrypt and decrypt the token`
107+
- `Issuer`: `Issuer`
108+
- `Audience`: `Audience`
109+
- The key, issuer and audience values to generate a jwt token, this can be changed in `appsettings.json` file
110+
111+
#### PasswordHasher
112+
113+
- `Key`: `Secret key to encrypt passwords`
114+
- The key to encrypt the passwords, this can be changed in `appsettings.json` file
115+
116+
### Client
117+
118+
- `VUE_APP_BASE_URL`: `http://localhost:5000/`
119+
- Base url to connect to the API, this can be changed in the `.env` file
120+
121+
- `productionSourceMap`: `false`
122+
- Generates source map file when building for production, this can be changed in `vue.config.js` file
123+
124+
- `outputDir`: comment out by default
125+
- Where the built files will be copied over, this can be changed in `vue.config.js` file
126+
127+
- `assetsDir`: comment out by default
128+
- Where the built minified css/js files will be copied over, this path is relative path from the `outputDir`, this can be changed in `vue.config.js` file
129+
130+
# Future Enhancements
131+
132+
- Have an admin role and an admin section to manage users
133+
- Add search functionality to expenses page
134+
- Add server side sorting/paging/searching to expensese page (and fix all actions/getters that rely on expenses being in the store)
135+
136+
# How to Contribute
137+
138+
1. Clone repo `git clone https://github.com/simplyvinay/vue-expenses.git`
139+
2. Create a new branch: `git checkout -b new_branch_name`
140+
3. Make changes and test
141+
4. Submit Pull Request with description of changes
142+
143+
## License
144+
145+
[MIT](https://github.com/simplyvinay/vue-expenses/blob/master/LICENSE)

assets/images/Dashboard.png

361 KB
Loading

assets/images/Expenses.png

252 KB
Loading

assets/images/Profile.png

67.5 KB
Loading

assets/images/Settings.png

399 KB
Loading

assets/images/Stats.png

582 KB
Loading

assets/images/mobile/Stats.png

281 KB
Loading

assets/images/mobile/dashboard.png

176 KB
Loading

vue-expenses-api/appsettings.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@
1111
"DefaultConnection": "Data Source=App_Data/expenses.db"
1212
},
1313
"JwtSettings": {
14-
"SecurityKey": "Nam_interdum_tortor_vel_tempus_malesuada._Donec_efficitur,_nibh_suscipit_fringilla_dapibus,_erat_massa_bibendum_risus,_sed_semper_nulla_leo_et_orci.",
14+
"SecurityKey": "A super secret long key to encrypt and decrypt the token",
1515
"Issuer": "Issuer",
1616
"Audience": "Audience"
1717
},
1818
"PasswordHasher": {
19-
"Key": "secret key"
19+
"Key": "Secret key to encrypt passwords"
2020
}
2121
}

vue-expenses-client/README.md

-24
This file was deleted.

vue-expenses-client/src/store/modules/account.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const actions = {
2525
commit(LOGIN_FAILURE);
2626
});
2727
},
28-
[REGISTER]({ commit, dispatch }, { email, firstName, lastName, password }) {
28+
[REGISTER]({ dispatch }, { email, firstName, lastName, password }) {
2929
Api.post('/register', {
3030
email, firstName, lastName, password
3131
})

0 commit comments

Comments
 (0)