简账(开源记账软件)-后端环境简介及部署

4,577 阅读4分钟

前言

由于自己有记账的需求,在尝试使用过市面上的记账软件后,发现大多数都有以下几个问题

  • 广告比较多,主要分为信息流广告及金融类广告
  • 页面太痈肿,使用体验不好
  • 部分高级功能需要收费,如数据导出

所以就萌生了自己做一个记账软件的想法,这个想法在2020年5月左右落地的,到目前也快有一年了。 本着OpenSource的想法,已全部开源,也想借写博客的机会获得一些Star❤

测试环境

正式环境:

  • 小程序:微信搜索【简账】
  • PC端:简账PC端

Github开源地址:

后续要完成的功能(重要性至上而下)

  • 支持多账本,可自定义维护
  • 支持设置预算(年月预算)
  • 支持多账本间冲销
  • 支持Excel导出(年或月可自定义)
  • 支持多人记账及家庭账本

待解决的Bug

  • 如用户未登录过小程序,小程序扫码授权会提示Token不能为空(提供者:喵了个小咪咪

写在后面
如果你有其他的想法或问题欢迎给我留言,或在Github上提Pr&Issue
tips:如果你也想你写的东西被人使用,欢迎跟我一起维护简账~

往期链接


一、后端主要技术栈简介

从大体上来看,整个后端为单体的SpringBoot+Redis+Mysql

具体涉及的技术如下所示:

  • JDK:openJDK 11
  • SpringBoot:2.3.x
  • SpringSecurity:5.3.x
  • MySQL:8.0
  • JJWT:0.7.0
  • mybatisPlus:3.3.x
  • knife4j(在线文档):knife4j
  • redis:5.0.x

Q&A

  1. 为什么使用openJDK11?

openJDK11是开源免费的LTS版本,相较于8有许多新特性

  1. 整个项目为什么要基于SpringBoot?

SpringBoot框架简单易用

  1. 为什么使用SpringSecurity+JWT?

引入SpringSecurity+JWT目的是为了做无状态基于Token的签发和鉴权

  1. 为何要有引入Redis?

为了实现扫码授权登录,进而引入了Redis。因授权需要的uuid是一个有效期内有效的数据,本身不需要存入数据,而存入Redis的话编码相对简单,性能也很好
后续也会将一些用户不经常改变的数据存入Redis

二、环境部署

此处以开发环境采用docker来构建项目为例 tips:如果为正式环境,则安装相应的mysql和redis即可

1. 安装JDK11

2. 从Github上下载压缩包后解压即可

在这里插入图片描述

3. 安装docker

如果为win10,则必须要是支持HyperV的版本
如果你无法安装docker的话,可以直接安装mysql8和redis5,本质上是一样的,只是提供了一个运行环境,跳过3、4两个步骤即可

  • windows10(必须要支持wsl):docker官网
  • linux:相对于windows安装会简单很多,不需要开启虚拟化等...

4. 使用docker-compose创建容器

此处以wsl为例子,linux系统操作逻辑基本一致

  • 进入项目的env文件夹 在这里插入图片描述

  • 创建容器

可以看到当前目录下面有一个docker-compose.yml,它主要就是做容器编排的。
定义了容器名、容器挂载目录、配置文件路径等

执行命令(拉取镜像并创建容器):docker-compose up - d 在这里插入图片描述

  • 查看容器是否正常运行 执行 docker ps,查看是否有redis和mysql两个容器在运行 在这里插入图片描述

tips:由于mysql容器初始化时指定了sql文件,所以容器一创建数据库也都创建好了,是不是很方便~

4. 运行程序

启动 SpringbootSimpleRecordApplication 启动类即可,控制台输出如下所示: 在这里插入图片描述

5. 查看在线文档

浏览器输入:http://localhost:5000/api/doc.html
就可以看到在线文档了在这里插入图片描述

三、总结

后续博客内容:

  1. 环境搭建-前端
  2. 数据库设计
  3. SpringBoot集成SpringSecurity+JWT及动态路由生成
  4. 小程序扫码登陆实现
  5. 记账及月账单实现
  6. 图表分析实现
  7. ...

简账开发者:

  1. SloppyJack
  2. SmallishJoker

四、致谢

在写了第一篇简账的博客后,大概有四十多个用户注册了简账。在此感谢注册了简账的各位,谢谢😊
如果你觉我这个项目还不错的话,不妨给我的Github点个Star♥

在这里插入图片描述