One, foreword
1.1 Source of Inspiration
In the early years, I was lucky enough to see a web-based Windows XP desktop entertainment system made by foreign leaders. At that time, I just had the idea of building a personal blog. Therefore, I thought whether I could realize a personal blog based on the Mac UI and display the various functions of blog in the form of application.
1.2 Related Links
- Front-end open source code: github.com/qianyin925/…
- Back-end open source: github.com/qianyin925/…
- Component libraries (separate component libraries from the project development process): github.com/qianyin925/…
- Online preview (visitors have limited access to all apps): www.qianyin925.com/
Second, why write this project
- Apply what you have learned to a specific project, and keep all dependencies and framework versions of the project as up-to-date as possible, so as to keep abreast of the latest knowledge
- In my opinion, continuous thinking and brainstorming are the only way to better promote growth. I can expand my capabilities through in-depth thinking on products, architecture, UI, interaction, project deployment and requirements management in projects
- Experience back-end (Node) development to understand the overall operation process of each functional module
- Putting some of my ideas into concrete projects can bring me a sense of achievement and keep me enthusiastic about technology
…
Three technology stack
3.1 the front
- use
React Hooks
Code as a functional component and use the new versionAntd
To develop - Use a personal component library
qyrc
Carry out project development and package some components in the project toqyrc
And publish it - use
Redux
To manage state and useredux-saga
Solving asynchronous problems - use
Sass
Preprocessor to write styles - use
Webpack
Build the project from scratch, complete the basic project configuration - use
Eslint
Specification of code syntax and style - use
husky
+commitlint
specificationgit commit
Submit information
3.2 the back-end
- use
Graphql
+Koa
Build the back-end system - use
Mongo
+mongoose
To store back-end data - use
node-rsa
For the user login passwordrsa
encryption - use
jsonwebtoken
Authenticating the user (JWT
) - use
tinify
Compress the uploaded image - use
cron
To manage scheduled tasks of the system (at present, daily scheduled backup of system data has been realized) - use
nodemailer
Email sending function (mainly used for data backup and sending backup data to specified email addresses) - use
pm2
To deploy back-end master projects and scheduled tasks - use
boxen
+inquirer
+ora
+shelljs
+chalk
To make it interactivenpm
Optional scripts include data backup, data recovery, role authorization, key creation, and temporary creationToken
… - use
winston
Record logs, including generating log files, printing and matching terminal logswebsocket
Visualize logs on the front end - use
docker
+docker-compose
Deploy projects as containers
Iv. System screenshots
4.1 the editor
For managing personal articles, the left directory is equivalent to the completed functions of file tag: add, delete, change and check articles and tags, publish articles, set thumbnails, preview…
4.2 Diary (The data below is simulated data)
Used to record daily living, weight, body fat, diet, exercise, bills completed functions: data increase, deletion, change and check, historical income and expenditure statistics, daily bill statistics chart, physical signs (signs, body fat) statistics chart……
4.3 Mac Touchbar extension (The following figure is simulated data)
Display your daily weight and your monthly expenses on the Mac Touchbar
4.4 Image Management
It is used to manage system image resources, including article illustrations, thumbnails, default profile pictures, and desktop wallpaper. Completed functions: batch upload, delete and compress pictures (back-end implementation)
4.5 System Preference Settings
Used to set the preferences of the system to achieve functions: program dock automatically hide Settings, menu bar full screen icon display, menu bar whether to show the week, customize the menu bar date format
4.6 Data Dictionary Management
Used to manage system data field data has been implemented functions: data add, delete, change, check……
4.7 System Notification Bar
Imitated Mac notification bar, displaying user information (including logout function), weather forecast…… Realized functions: User information display (including logout function)
4.8 Log Monitoring
Used to view the log information output by the background service in real time (Websocket implementation) Realized functions: obtain and display logs
Five, the ToDo List
- Reader: used for displaying, querying and reading blog articles
- Permissions management: Setting permissions with roles (currently via scripts)
- Script management: online script specified to add, delete, change and check, can be set to run regularly, can be sent by the chat window to achieve the specified
- Music announcer: Play music (try to access netease Cloud)
- Comment message module: Add message function in the notification bar, add comment function in the article, add comment message reply function in the background, enable bullet screen (message) function on the desktop
- Graphic functions: online editing flow charts, mind maps…
- System configuration: desktop wallpaper Settings, dynamic wallpaper implementation (
canvas
,webGL
)… - System monitoring: log monitoring, system resource monitoring, front and back buried points……
…
This article is participating in the “Nuggets 2021 Spring Recruitment Campaign”, click to see the details of the campaign