仿 Mac 个人网站开发 |项目复盘

一、前言

1.1 灵感来源

早年有幸看到国外大佬做的一个 基于 Web 的 Windows XP 桌面娱乐系统, 那时刚好有搭建一个个人博客的想法, 所以就想是否可以基于 WEB 实现一个仿 Mac UI 的个人博客, 以应用的形式来展示博客各个功能!

1.2 相关链接(求个 Star)

  1. 前端开源代码
  2. 后端开源代码
  3. 组件库(项目开发过程中抽离出独立的组件库)
  4. 在线预览(游客权限有限无法查看所有应用)

1.3 效果图如下

image

二、为什么要写这个项目

  1. 将自己所学应用到具体项目, 同时项目所有依赖、框架版本都尽可能保持最新, 以求能够及时掌握最新知识
  2. 个人感觉只有不断思考、头脑风暴才能更好的促进成长, 通过在项目对产品、架构、UI、交互、项目部署、需求管理等进行深入思考, 从而扩展自己的能力
  3. 体验后端(node)开发, 了解每个功能模块整体运行的流程
  4. 将自己的一些奇思妙想, 在具体项目中实现出来, 能够给自己带来满满成就感, 让自己对技术时刻保持着热情
    ……

三 技术栈

3.1 前端

  1. 使用 React Hooks 以函数式组件来进行编码, 并使用新版 Antd 来进行开发
  2. 使用个人组件库 qyrc 进行项目开发, 并将项目中部分组件封装到 qyrc 并进行发布
  3. 使用 Redux 来管理状态, 并使用 redux-saga 解决异步问题
  4. 使用 Sass 预处理器来编写样式
  5. 使用 Webpack 从零搭建项目, 完成基本的项目配置
  6. 使用 Eslint 规范代码语法、风格
  7. 使用 husky + commitlint 规范 git commit 提交信息

3.2 后端

  1. 使用 Graphql + Koa 构建后端系统
  2. 使用 Mongo + mongoose 来存储后端数据
  3. 使用 node-rsa 对用户登录密码进行 rsa 加解密
  4. 使用 jsonwebtoken 对用户身份进行验证(JWT
  5. 使用 tinify 对上传的图片进行压缩
  6. 使用 cron 来管理系统定时任务(目前已实现系统数据的每日定时备份)
  7. 使用 nodemailer 实现邮件发送功能(主要用于数据备份, 将备份数据发送指定邮箱)
  8. 使用 pm2 来部署后端主项目以及定时任务
  9. 使用 boxen + inquirer + ora + shelljs + chalk 来实现交互式 npm 脚本, 可选脚本有: 数据备份、数据恢复、角色授权、创建秘钥、创建临时 Token ……
  10. 使用 winston 记录日志, 包括日志文件的生成、终端日志的打印输出、 配合 websocket 将日志在前端进行可视化展示
  11. 使用 docker + docker-compose 以容器的方式来部署项目

四、系统截图

4.1 编辑器

image.png

用于管理个人文章, 左侧目录就相当于文件 tag
已完成功能: 文章以及目录(tag) 增删改查、文章发布、缩略图设置、预览……

4.2 日记(下图数据为模拟数据)

image.png

用于记录每天起居、体重、体脂、饮食、运动、账单
已完成功能: 数据的增删改查、历史收支统计、每日账单统计图、身体体征(体征、体脂)统计图……

4.3 Mac Touchbar 扩展功能(下图数据为模拟数据)

image.png

在 Mac Touchbar 上展示每日体重以及本月开销

4.4 图片管理

image.png

用于管理系统图片资源, 包括文章插图、缩略图、默认头像、桌面壁纸……
已完成功能: 图片的批量上传、删除、图片压缩(后端实现)

4.5 系统偏好设置

image.png

用于对系统的偏好进行设置
以实现功能: 程序坞自动隐藏设置、菜单栏全屏图标显示、菜单栏是否显示星期、自定义菜单栏日期格式

4.6 数据字典管理

image.png

用于管理系统数据字段数据
已实现功能: 数据的增、删、改、查……

4.7 系统通知栏

image.png

仿 Mac 通知栏, 展示用户信息(包含登出功能)、天气预报……
已实现功能: 用户信息展示(包含登出功能)

4.8 日志监控

image.png

用于实时查看后台服务输出的日志信息(websocket 实现)
已实现功能: 日志的获取、展示

五、ToDo List

  • 阅读器: 用于博客文章展示、查询、阅读
  • 权限管理: 用角色设置权限(目前通过脚本设置)
  • 脚本管理: 在线脚本指定的增删改查、可设置定时运行、可通过以聊天窗口方式发送指定来实现
  • 音乐播发器: 播放音乐(尝试接入网易云)
  • 评论留言模块: 在通知栏添加留言功能、文章添加评论功能、后台添加评论留言回复功能、桌面可开启弹幕(留言)功能
  • 图形功能: 在线编辑流程图、思维导图……
  • 系统配置: 桌面壁纸设置、动态壁纸实现(canvaswebGL)……
  • 系统监控: 日志监控、系统资源监控、前后端埋点……
    ……
    image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/892189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI 实时语音Realtime API接口申请: 助力开发者打造快速语音对话体验

OpenAI发布宣布推出Realtime API的公开测试版,所有付费开发者都可以在他们的应用中构建快速的语音对话体验。该API支持六种预设语音,类似于ChatGPT的高级语音模式,使自然的语音对话成为可能。 此外,Chat Completions API也新增了音…

【微服务】springboot远程docker进行debug调试使用详解

目录 一、前言 二、线上问题常用解决方案 2.1 微服务线上运行中常见的问题 2.2 微服务线上问题解决方案 2.3 远程debug概述 2.3.1 远程debug原理 2.3.2 远程debug优势 三、实验环境准备 3.1 搭建springboot工程 3.1.1 工程结构 3.1.2 引入基础依赖 3.1.3 添加配置文…

linux下使用mpi求自然数和

搭建MPI并行计算环境,编写 MPI程序,求和 1 23....1 0000。 要求: 1.使用100个进程; 2.进程0计算1 2...100, 进程1计算101 102... 200, ..... 进程99计算9901 9902... 10000; 3.调用计时函数,分别输出每个进程的计算时间; 4.需使用MPI集群通信函数和同…

【数据结构】时间、空间复杂度详解

大家有没有遇到过,为什么有些程序跑得飞快,而有些程序却慢得让人抓狂?我们可能都是这样认为的:他写的程序效率高等等,确实如此。但这背后隐藏着两个重要的概念:时间复杂度和空间复杂度。它们就像程序的“效…

MySQL的多表查询之联合查询

union联合查询 union用于合并两个或多个select语句的结果集 unnion将两个表上下拼在一起 要求: –两边select语句的字段数必须一致 –两边可以有不同数据类型的字段 –字段名默认按左边的表来设置 select column_name from table1 union select column_name from …

【Kubernets】配置类型资源 Etcd, Secret, ConfigMap

文章目录 所有资源概览Etcd详细说明一、基本概念二、主要功能三、架构与组件四、数据模型与操作五、安全与认证六、集群部署与管理 Secret详细说明一、Secret 的类型二、Secret 的创建三、Secret 的使用四、Secret 的更新与删除五、Secret 的安全性 ConfigMap详细说明一、Confi…

【分布式训练(5)】无法 kill PID?如何 kill 休眠中的 GPU 占用进程

【分布式训练 debug】VS Code Debug 技巧:launch.json实用参数 【分布式训练(2)】深入理解 DeepSpeed 的 ZeRO 内存优化策略 (三阶段的区别) 【分布式训练(3)】accelerator deepspeed debug 报错 “Timed out waiting…

华为OD机试 - 最大利润 - 贪心算法(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

光伏仿真系统的好处

现在的做光伏电站的项目,很多任务都是后置的,这样的话问题的暴露就会在每个时间段,光伏仿真系统的好处,就是在做每一步工作前,系统已经把每一步的工作都分配好了,有任何问题都可以提前知道, 获…

awk工具的基本使用

awk的作用从整体上来说就是用来分隔文本的。 默认是根据空白字符,将一行文件内容分隔成多部份。 常用选项: 使用-F的选项来指定awk工具使用的分隔符, 在awk内部有类似于$1,$2,$3这样的变量,$1代表第一部分,$2代表第…

密码管理APP系统规格说明书(初版)

这里写目录标题 1 引言1.1 背景1.2 目的1.3 范围 2 系统需求2.1 功能需求2.2 性能需求2.3 安全需求2.4 兼容性需求 3 系统设计3.1 总体架构3.1.1 系统架构概述3.1.2 技术选型 3.2 功能模块设计3.2.1 密码生成模块3.2.2 安全存储模块3.2.3 自动填充模块3.2.4 多平台支持模块3.2.…

开源商城系统crmeb phpstudy安装配置

BOSS让我最快时间部署一套开源商场系统,今天就以crmeb为例。 快速部署在linux中我会首选docker,因为我要在windows中部署,本文就选用phpstudy集成环境做了。 什么是crmeb 我从官网摘点: CRMEB产品与服务 CRMEB通过将CRM&#x…

SPI通信时序

前言: 作为Motorola的又一伟大发明的SPI总线通信协议,在理解和应用上也是十分复杂且难以理解,博主想通过这篇文章想把SPI的原理和应用大概讲一下,同时也是记录自己对于I2C的学习和理解。 SPI概述: SPI 是英语Serial P…

【C语言复习专题】函数调用

【C语言复习专题】函数调用 1.递归是什么?1.1递归的思想:1.2递归的限制条件 2.递归举例2.1eg1:求n的阶乘2.1.1 分析和代码实现2.1.2作图演示过程 2.2 eg2:顺序打印一个整数的每一位2.2.1分析 3.递归与迭代 1.递归是什么&#xff1…

2-124 基于matlab得结构稀疏字典实现SAR图像低秩重建

基于matlab得结构稀疏字典实现SAR图像低秩重建,通过K-SVD和W-KSVD结合OMP进行重建。K-SVD算法是一种字典学习算法,能够对字典进行优化,使其能够更好地表示训练样本集。W-KSVD算法是K-SVD算法的扩展,它能够利用权重信息对字典进行优…

华为---Super VLAN简介及示例配置

目录 1. Super VLAN技术产生背景 2. Super VLAN概念 3. Super VLAN应用场景 4. Super VLAN工作原理 5. Super-VLAN主要配置命令 6. Super-VLAN主要配置步骤 7. 示例配置 7.1 示例场景 7.2 网络拓扑 7.3 配置代码 7.4 代码解析 7.5 测试验证 1. Super VLAN技术产生背…

【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)

本文项目编号 T 020 ,文末自助获取源码 \color{red}{T020,文末自助获取源码} T020,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

ubuntu20.4环境下gcc-aarch64交叉编译器的安装

交叉编译器(Linux环境)arm gcc 8.3一共有5个版本,常用的有4个版本(另外一个为大端linux版本),分别是32bit裸机版本(arm-eabi)、64bit裸机版本(aarch64-elf)、…

2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…

EM算法学习

1.EM算法的介绍 可以发现:计算出θA和θB的值的前提是知道A、B币种的抛掷情况。 所以我们需要使用EM算法:求出每轮选择硬币种类的概率 2.EM算法执行过程: 第一步:首先初始化设置一组PA和PB证明的值。然后通过最大似然估计得到每…