Skip to content

Commit d95d9c4

Browse files
committed
fix: update references from "MX Space" to "Mix Space" across the codebase
- Corrected project name in documentation files, including CLAUDE.md, README.md, and migration guides. - Updated HTML titles and text in admin dashboard and telemetry pages. - Adjusted API client and webhook SDK documentation to reflect the new project name. - Ensured consistency in email subjects and sender names in various services. - Modified OpenAPI documentation to use the new project name. Signed-off-by: Innei <tukon479@gmail.com>
1 parent aa1f457 commit d95d9c4

31 files changed

Lines changed: 391 additions & 348 deletions

File tree

.claude/skills/api-conventions/SKILL.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
name: api-conventions
3-
description: MX Space API design conventions. Apply when writing controllers, API endpoints, or handling HTTP requests.
3+
description: Mix Space API design conventions. Apply when writing controllers, API endpoints, or handling HTTP requests.
44
user-invocable: false
55
---
66

7-
# MX Space API Design Conventions
7+
# Mix Space API Design Conventions
88

99
## Controller Decorators
1010

@@ -33,11 +33,11 @@ async get(@CurrentUser() user: UserModel) {}
3333

3434
`ResponseInterceptor` (global `APP_INTERCEPTOR`) wraps every controller return value:
3535

36-
| Return value | Emitted |
37-
|-------------|-------------------|
38-
| bare value `T` | `{ data: T }` |
39-
| `withMeta(data, meta)` | `{ data, meta }` |
40-
| `undefined` | 204 No Content |
36+
| Return value | Emitted |
37+
| ----------------------------- | ---------------------------------------------- |
38+
| bare value `T` | `{ data: T }` |
39+
| `withMeta(data, meta)` | `{ data, meta }` |
40+
| `undefined` | 204 No Content |
4141
| `@HTTPDecorators.RawResponse` | untouched — skips envelope and case conversion |
4242

4343
`withMeta` (from `~/common/response/envelope.types`) is detected by an internal `Symbol`,
@@ -47,6 +47,7 @@ include `data` gets double-wrapped. CI enforces this via
4747

4848
`transformResponseCase` (`~/common/response/case-transform.ts`) converts the response
4949
`data`/`meta` to snake_case at the wire boundary:
50+
5051
- `createdAt``created_at`
5152
- `categoryId``category_id`
5253

@@ -116,13 +117,13 @@ async create(@Body() body: CreateDto) {}
116117

117118
## HTTP Methods
118119

119-
| Method | Purpose | Status Code |
120-
|--------|---------|-------------|
121-
| GET | Retrieve resource | 200 |
122-
| POST | Create resource | 201 |
123-
| PUT | Full update | 200 |
124-
| PATCH | Partial update | 200 |
125-
| DELETE | Delete resource | 204 |
120+
| Method | Purpose | Status Code |
121+
| ------ | ----------------- | ----------- |
122+
| GET | Retrieve resource | 200 |
123+
| POST | Create resource | 201 |
124+
| PUT | Full update | 200 |
125+
| PATCH | Partial update | 200 |
126+
| DELETE | Delete resource | 204 |
126127

127128
## Error Handling
128129

.claude/skills/create-module/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ disable-model-invocation: true
77

88
# Create NestJS Module (PostgreSQL / Drizzle)
99

10-
Create a new NestJS module for MX Space project. Module name: `$ARGUMENTS`
10+
Create a new NestJS module for Mix Space project. Module name: `$ARGUMENTS`
1111

1212
## Directory Structure
1313

.claude/skills/mx-review/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
22
name: mx-review
3-
description: Review code for MX Space project conventions. Checks NestJS patterns, Drizzle ORM repositories, Zod schemas, API design, etc.
3+
description: Review code for Mix Space project conventions. Checks NestJS patterns, Drizzle ORM repositories, Zod schemas, API design, etc.
44
argument-hint: [file-path]
55
---
66

7-
# MX Space Code Review
7+
# Mix Space Code Review
88

99
Review code for project conventions. Target: `$ARGUMENTS`
1010

.claude/skills/zod-patterns/SKILL.md

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: zod-patterns
3-
description: MX Space project Zod schema patterns. Apply when creating DTOs, validation schemas, or handling request validation.
3+
description: Mix Space project Zod schema patterns. Apply when creating DTOs, validation schemas, or handling request validation.
44
user-invocable: false
55
---
66

@@ -33,41 +33,41 @@ Location: `apps/core/src/common/zod/`
3333
```typescript
3434
import {
3535
// From primitives.ts:
36-
zNonEmptyString, // Non-empty string (z.string().min(1))
37-
zCoerceInt, // Coerced integer
38-
zCoercePositiveInt, // Coerced positive integer
39-
zCoerceBoolean, // Coerced boolean (handles 'true'/'1'/1/etc.)
40-
zCoerceDate, // Coerced date
41-
zOptionalDate, // Optional date (null/empty → undefined)
42-
zOptionalBoolean, // Optional coerced boolean
43-
zEmptyStringToNull, // Empty string → null, else string
44-
zNilOrString, // string | null | undefined
45-
zHexColor, // Hex color (#fff or #ffffff)
46-
zAllowedUrl, // HTTP or HTTPS URL
47-
zStrictUrl, // Strict URL validation
48-
zHttpsUrl, // HTTPS-only URL
49-
zPaginationPage, // Coerced int, min 1, default 1
50-
zPaginationSize, // Coerced int, min 1, max 50, default 20
51-
zSortOrder, // 1 | -1 | undefined (accepts 'asc'/'desc')
52-
zArrayUnique, // Unique array elements (generic)
53-
zUniqueStringArray, // Unique non-empty string array
36+
zNonEmptyString, // Non-empty string (z.string().min(1))
37+
zCoerceInt, // Coerced integer
38+
zCoercePositiveInt, // Coerced positive integer
39+
zCoerceBoolean, // Coerced boolean (handles 'true'/'1'/1/etc.)
40+
zCoerceDate, // Coerced date
41+
zOptionalDate, // Optional date (null/empty → undefined)
42+
zOptionalBoolean, // Optional coerced boolean
43+
zEmptyStringToNull, // Empty string → null, else string
44+
zNilOrString, // string | null | undefined
45+
zHexColor, // Hex color (#fff or #ffffff)
46+
zAllowedUrl, // HTTP or HTTPS URL
47+
zStrictUrl, // Strict URL validation
48+
zHttpsUrl, // HTTPS-only URL
49+
zPaginationPage, // Coerced int, min 1, default 1
50+
zPaginationSize, // Coerced int, min 1, max 50, default 20
51+
zSortOrder, // 1 | -1 | undefined (accepts 'asc'/'desc')
52+
zArrayUnique, // Unique array elements (generic)
53+
zUniqueStringArray, // Unique non-empty string array
5454

5555
// From custom.ts:
56-
zBooleanOrString, // boolean | string union
57-
zTransformEmptyNull, // Empty string → null (generic wrapper)
58-
zTransformBoolean, // Transform to optional boolean
59-
zPinDate, // Pin date (Date | null | undefined, true=now, false=null)
60-
zSlug, // Slug string (trimmed)
61-
zEmail, // Email with custom message
62-
zUrl, // URL with custom message
63-
zMaxLengthString, // Max length string factory
64-
zRefTypeTransform, // Content ref type ('post'→'Post', etc.)
65-
zPrefer, // 'lexical' enum optional
66-
zLang, // 2-char language code
56+
zBooleanOrString, // boolean | string union
57+
zTransformEmptyNull, // Empty string → null (generic wrapper)
58+
zTransformBoolean, // Transform to optional boolean
59+
zPinDate, // Pin date (Date | null | undefined, true=now, false=null)
60+
zSlug, // Slug string (trimmed)
61+
zEmail, // Email with custom message
62+
zUrl, // URL with custom message
63+
zMaxLengthString, // Max length string factory
64+
zRefTypeTransform, // Content ref type ('post'→'Post', etc.)
65+
zPrefer, // 'lexical' enum optional
66+
zLang, // 2-char language code
6767

6868
// From shared/id/entity-id.ts:
69-
zEntityId, // Snowflake entity ID string validation
70-
zEntityIdOrInt, // Entity ID or positive integer union
69+
zEntityId, // Snowflake entity ID string validation
70+
zEntityIdOrInt, // Entity ID or positive integer union
7171
} from '~/common/zod'
7272
```
7373

@@ -77,9 +77,9 @@ import {
7777
import { zEntityId } from '~/common/zod'
7878

7979
const Schema = z.object({
80-
id: zEntityId, // Snowflake ID string
81-
categoryId: zEntityId, // Foreign key reference
82-
relatedIds: z.array(zEntityId), // Array of entity IDs
80+
id: zEntityId, // Snowflake ID string
81+
categoryId: zEntityId, // Foreign key reference
82+
relatedIds: z.array(zEntityId), // Array of entity IDs
8383
})
8484

8585
// For DTOs used in path params:
@@ -116,13 +116,13 @@ z.array(z.string()).default([]).optional()
116116
// Empty string to null
117117
z.preprocess(
118118
(val) => (val === '' ? null : val),
119-
z.string().nullable()
119+
z.string().nullable(),
120120
).optional()
121121

122122
// String to number
123123
z.preprocess(
124124
(val) => (typeof val === 'string' ? parseInt(val, 10) : val),
125-
z.number()
125+
z.number(),
126126
)
127127
```
128128

@@ -168,10 +168,9 @@ const UserSchema = z.object({
168168
z.object({
169169
password: z.string(),
170170
confirmPassword: z.string(),
171-
}).refine(
172-
(data) => data.password === data.confirmPassword,
173-
{ message: 'Passwords must match' }
174-
)
171+
}).refine((data) => data.password === data.confirmPassword, {
172+
message: 'Passwords must match',
173+
})
175174
```
176175

177176
## Type Inference

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
44

55
## Project Overview
66

7-
MX Space is a personal blog server application (AI-powered headless CMS) built with NestJS, PostgreSQL, and Redis. This is a monorepo containing the core server application and related packages. The main application is located in `apps/core/`; the admin dashboard SPA lives at `apps/admin/` and is built into the server release (see `apps/admin/CLAUDE.md`).
7+
Mix Space is a personal blog server application (AI-powered headless CMS) built with NestJS, PostgreSQL, and Redis. This is a monorepo containing the core server application and related packages. The main application is located in `apps/core/`; the admin dashboard SPA lives at `apps/admin/` and is built into the server release (see `apps/admin/CLAUDE.md`).
88

99
## Related Projects
1010

apps/admin/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Guidance for Claude Code when working in the admin app inside the mx-core monore
44

55
## Project Overview
66

7-
This is the MX Space admin dashboard — a React 19 SPA (package `@mx-admin/admin`).
7+
This is the Mix Space admin dashboard — a React 19 SPA (package `@mx-admin/admin`).
88
It lives at `apps/admin` within the mx-core monorepo and is built locally during the
99
core build/release; it is no longer downloaded from GitHub releases. The built output
1010
(`apps/admin/dist`) is served by the sibling backend app `apps/core` under the route

apps/admin/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# @mx-admin/admin
22

3-
Admin dashboard for MX Space Core — a React 19 SPA served by the core server at `/proxy/qaqdmin`.
3+
Admin dashboard for Mix Space Core — a React 19 SPA served by the core server at `/proxy/qaqdmin`.
44

55
## Tech Stack
66

apps/admin/index.html

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
link.href = favicon
1616
document.head.appendChild(link)
1717
</script>
18-
<title>Mx Space Admin</title>
18+
<title>Mix Space Admin</title>
1919
<script>
2020
window.injectData = {}
2121
window.version = 'N/A'
2222
window.pageSource = 'self'
2323
</script>
2424
<!-- ENV INJECT -->
25-
<!-- MX SPACE ADMIN DASHBOARD VERSION INJECT -->
25+
<!-- Mix Space ADMIN DASHBOARD VERSION INJECT -->
2626
<!-- injectable script -->
2727
</head>
2828

@@ -98,8 +98,8 @@
9898
</div>
9999
<noscript>
100100
<strong
101-
>We're sorry but MX Space Admin doesn't work properly without JavaScript
102-
enabled. Please enable it to continue.</strong
101+
>We're sorry but Mix Space Admin doesn't work properly without
102+
JavaScript enabled. Please enable it to continue.</strong
103103
>
104104
<strong>
105105
It may be a network problem that caused the failure to load the JS file.
@@ -134,17 +134,13 @@
134134
var w = JSON.parse(
135135
localStorage.getItem('admin:sidebar-width') || '240',
136136
)
137-
var px =
138-
typeof w === 'number' && w >= 200 && w <= 360 ? w : 240
137+
var px = typeof w === 'number' && w >= 200 && w <= 360 ? w : 240
139138
document.documentElement.style.setProperty(
140139
'--sidebar-width',
141140
c ? '0px' : px + 'px',
142141
)
143142
} catch (_) {
144-
document.documentElement.style.setProperty(
145-
'--sidebar-width',
146-
'240px',
147-
)
143+
document.documentElement.style.setProperty('--sidebar-width', '240px')
148144
}
149145
})()
150146
</script>

apps/admin/src/hooks/use-document-title.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { appRoutes } from 'virtual:admin-routes'
55

66
import { useI18n } from '~/i18n'
77

8-
const APP_NAME = 'Mx Space Admin'
8+
const APP_NAME = 'Mix Space Admin'
99

1010
const overrideStack: string[] = []
1111
const listeners = new Set<() => void>()

apps/admin/src/i18n/resources/en-US.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2936,9 +2936,9 @@ export const enUS = {
29362936
'socket.gatewayDisconnect': 'Gateway disconnected',
29372937
'socket.newComment': 'New comment',
29382938
'socket.newLinkApply': 'New friend link application',
2939-
'socket.notificationCommentTitle': 'Mx Space Admin received a new comment',
2939+
'socket.notificationCommentTitle': 'Mix Space Admin received a new comment',
29402940
'socket.notificationLinkApplyTitle':
2941-
'Mx Space Admin received a new friend link application',
2941+
'Mix Space Admin received a new friend link application',
29422942
'socket.reconnectFailed': 'Socket reconnect failed',
29432943
'socket.reconnectSuccess': 'Socket reconnected',
29442944
'socket.reconnecting': 'Socket reconnecting',

0 commit comments

Comments
 (0)