feat: init fitness-coach (backend + miniprogram)

- backend: NestJS service with exercise/plan data
- miniprogram: WeChat mini program client
- exclude node_modules, dist, runtime data-store, local env
This commit is contained in:
2026-07-22 00:35:40 +08:00
commit b3b58e66fb
103 changed files with 154759 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
Component({
properties: {
title: { type: String, value: '' },
subtitle: { type: String, value: '' },
eyebrow: { type: String, value: '' },
action: { type: String, value: '' }
},
methods: {
onAction() {
this.triggerEvent('action');
}
}
});

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,8 @@
<view class="sh">
<view class="sh__main">
<view wx:if="{{eyebrow}}" class="eyebrow">{{eyebrow}}</view>
<view class="sh__title">{{title}}</view>
<view wx:if="{{subtitle}}" class="sh__sub">{{subtitle}}</view>
</view>
<view wx:if="{{action}}" class="sh__action" bindtap="onAction">{{action}} </view>
</view>

View File

@@ -0,0 +1,23 @@
.sh {
display: flex;
align-items: flex-end;
justify-content: space-between;
padding: 8rpx 0 20rpx;
}
.sh__title {
font-size: 40rpx;
font-weight: 700;
letter-spacing: 2rpx;
color: var(--text);
margin-top: 8rpx;
}
.sh__sub {
font-size: 24rpx;
color: var(--text-2);
margin-top: 8rpx;
}
.sh__action {
font-size: 26rpx;
color: var(--gold);
white-space: nowrap;
}