37 Commits

Author SHA1 Message Date
8440d9068d BLOG-118 fix: make post info published time be able to receive null
Some checks failed
Frontend CI / build (push) Failing after 59s
Auto Comment On PR / add_improve_comment (pull_request) Successful in 14s
PR Title Check / pr-title-check (pull_request) Successful in 17s
2025-08-06 20:37:31 +08:00
71bae3d8ca BLOG-90 Intergrate error tracking with Sentry (#120)
All checks were successful
Frontend CI / build (push) Successful in 1m29s
### Description

There are several environment variables should be set:

- Frontend
  - `PUBLIC_SENTRY_DSN`
  - `SENTRY_AUTH_TOKEN`
- Backend
  - `SENTRY_DSN`

If the dsn isn't set, errors won't be sent to Sentry.

### Package Changes

_No response_

### Screenshots

![image.png](/attachments/22e49f8d-ac01-4d09-8ff0-7ce87b787055)

### Reference

Resolves #90

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #120
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-06 20:20:47 +08:00
171410e115 BLOG-48 SEO Improvement (#116)
All checks were successful
Frontend CI / build (push) Successful in 1m14s
### Description

#### Overview
This PR improves the website's SEO by:
1. Moving title and meta description tags from app.html to individual page components
2. Adding dynamic meta descriptions based on page content
3. Implementing structured data for blog posts using JSON-LD
4. Optimizing meta descriptions for better search engine visibility

#### Changes
- **app.html**: Removed static title and meta description tags
- **HomePage.svelte**: Added descriptive title parameter to generateTitle function
- **Terminal.svelte**: Dynamically generates meta description from terminal lines
- **PostContentPage.svelte**: Added meta description and structured data for blog posts
- **PostOverallPage.svelte**: Added descriptive meta description for blog listing page
- **StructuredData.svelte**: Created new component to generate JSON-LD structured data for blog posts

#### Benefits
- Improved SEO through better metadata management
- Enhanced search engine visibility with structured data
- More accurate and dynamic meta descriptions
- Better control over page-specific metadata

> [!NOTE]
> Since sitemap auto generating is a little more complex, it will be solved in #117 in the future.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #48

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #116
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-05 11:25:39 +08:00
bc20385ff2 Merge branch 'release/0.2' into NO-ISSUE_merge_v0.2.2
All checks were successful
Frontend CI / build (push) Successful in 1m8s
Auto Comment On PR / add_improve_comment (pull_request) Successful in 17s
PR Title Check / pr-title-check (pull_request) Successful in 16s
2025-08-04 07:32:40 +08:00
a6e1ee3c1c BLOG-112 Add Google Analytics integration and update environment variables (#113)
All checks were successful
Frontend CI / build (push) Successful in 1m11s
### Description

- New env var: PUBLIC_GA_MEASUREMENT_ID=G-XXX

### Package Changes

_No response_

### Screenshots

![image.png](/attachments/5d830c44-f447-4e06-907a-2a0cbf976ca8)

### Reference

Resolves #112

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #113
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-04 07:29:10 +08:00
18f29655bf BLOG-92 Fix improve google font loading efficiency (#111)
All checks were successful
Frontend CI / build (push) Successful in 1m10s
### Description

Reference: https://web.dev/learn/performance/understanding-the-critical-path?utm_source=lighthouse&utm_medium=lr&hl=zh-tw#render-blocking_resources/

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #92

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #111
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-02 15:26:49 +08:00
b953d0bf0d BLOG-109 Fix published_time schema to include offset (#110)
All checks were successful
Frontend CI / build (push) Successful in 1m8s
### Description

Reference: https://zod.dev/api?id=iso-dates#iso-datetimes

- Add `{ offset: true }` as options.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #109

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #110
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-02 14:55:44 +08:00
a5f66616c4 BLOG-104 Implement CRUD functionality for Posts (#108)
All checks were successful
Frontend CI / build (push) Successful in 1m8s
### Description

This pull request introduces the core functionality for creating and updating posts, completing the backend CRUD operations for the `post` feature. It includes new API endpoints, database schema changes, and corresponding updates across the entire application stack from the database layer to the frontend.

#### Backend API

-   **Added new authenticated endpoints:**
    -   `POST /post`: To create a new post.
    -   `PUT /post/{id}`: To update an existing post.
-   Implemented the full vertical slice for these operations, including:
    -   `CreatePostUseCase` and `UpdatePostUseCase`.
    -   Repository and DB service methods for creating, updating, and associating posts with labels.
    -   Transactional database operations to ensure data integrity when creating/updating posts and their associated labels.

#### Database

-   Added a new migration to include an `"order"` column in the `post_label` table.
-   This column preserves the user-defined order of labels for each post.
-   Queries have been updated to fetch and sort labels based on this new column.

#### API Schema & Documentation

-   Enhanced `utoipa` OpenAPI documentation with more specific formats for data types:
    -   `#[schema(format = Uri)]` for URLs like `preview_image_url`.
    -   `#[schema(format = Email)]` for user emails.
    -   `#[schema(format = DateTime)]` for timestamps.
-   Standardized the `published_time` field to use the RFC3339 string format instead of a numeric timestamp, improving API clarity and interoperability.

#### Frontend

-   Updated the `PostInfoResponseDto` in the frontend to correctly parse the new `DateTime` (ISO string) format for `published_time`.

#### Refactoring

-   Renamed `get_full_post` to a more descriptive `get_post_by_id` across the post feature module for better code clarity.

### Package Changes

```toml
utoipa = { version = "5.4.0", features = [
    "actix_extras",
    "non_strict_integers",
    "url",
] }
```

### Screenshots

_No response_

### Reference

Resolves #104

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #108
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-02 14:35:27 +08:00
71528294ae BLOG-105 Implement CRUD functionality for Labels (#107)
All checks were successful
Frontend CI / build (push) Successful in 1m8s
### Description

This PR introduces full CRUD (Create, Read, Update) functionality for post labels, implemented by following the existing Clean Architecture.

#### Backend

* **New API Endpoints for Label Management:**
    * `POST /label`: Create a new label (**authentication required**).
    * `PUT /label/{id}`: Update a label by its ID (**authentication required**).
    * `GET /label`: Get all labels.

* **Architectural Implementation:**
    * **Delivery Layer**: Added `CreateLabelRequestDto`, `UpdateLabelRequestDto`, and updated `PostController` with methods to handle label-related operations.
    * **Application Layer**: Created corresponding use cases (`CreateLabelUseCase`, `UpdateLabelUseCase`, `GetAllLabelsUseCase`) to handle business logic.
    * **Gateway/Framework Layer**: Implemented `LabelRepository` and `LabelDbService` to manage database interactions, including creating, updating, and querying labels.

* **Route Adjustment:**
    * The route for fetching all post info has been changed from `GET /post/all` to `GET /post` to be more RESTful.

#### Frontend

* **API Call Update:**
    * To match the backend route change, the API path for fetching all posts is updated from `/post/all` to `/post`.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #105

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #107
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-08-02 10:46:00 +08:00
8d7b59263d NO-ISSUE build: update frontend version
All checks were successful
Frontend CI / build (push) Successful in 1m6s
Deployment / deployment (release) Successful in 7m9s
PR Title Check / pr-title-check (pull_request) Successful in 16s
2025-07-28 00:22:39 +08:00
64ebfaa3e9 BLOG-87 Fix to unify post content title color (#88)
All checks were successful
Frontend CI / build (push) Successful in 1m5s
### Description

- Enhance typography and color consistency in PostPreview and PostContentPage
- Add tailwind configuration for custom typography styles

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #87

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #88
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-28 00:21:09 +08:00
95fabee99d BLOG-73 Change website title dynamically (#77)
All checks were successful
Frontend CI / build (push) Successful in 1m7s
### Description

- Use `generateTitle` to combine app name and page title.

### Package Changes

_No response_

### Screenshots

|Home|Post Overall|Post Content|
|-|-|-|
|![Screenshot From 2025-07-26 01-58-04.png](/attachments/70ed7440-bd5a-4e9d-a747-bb785c9f7e16)|![Screenshot From 2025-07-26 01-58-27.png](/attachments/58386f0d-e476-4795-8ac4-f0abc6586721)|![Screenshot From 2025-07-26 01-58-31.png](/attachments/cf7cb5a6-af5e-4dc6-907f-8cb8253f1b13)|

### Reference

Resolves #73

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #77
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-26 02:01:24 +08:00
9ad3809f47 BLOG-70 Add tooltip for post preview (#76)
All checks were successful
Frontend CI / build (push) Successful in 1m7s
### Description

- A a `title` attribute on the `<a>` element.
- Make the title as `<h2>` and the description as `<p>`.

### Package Changes

_No response_

### Screenshots

![image.png](/attachments/0d4b815e-d1c5-432c-8174-53273189a9c3)

### Reference

Resolves #

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #76
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-26 01:29:18 +08:00
462b1a6efb NO-ISSUE build: update frontend version
All checks were successful
PR Title Check / pr-title-check (pull_request) Successful in 17s
Frontend CI / build (push) Successful in 1m7s
Deployment / deployment (release) Successful in 5m38s
2025-07-26 00:34:48 +08:00
7770a5b569 BLOG-72 Fix img cannot be shown on content page (#74)
All checks were successful
Frontend CI / build (push) Successful in 1m7s
### Description

<https://www.npmjs.com/package/sanitize-html>

![image.png](/attachments/f35293b6-7c80-4a6f-917e-fa0d4cffa804)

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #72

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #74
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-26 00:33:17 +08:00
2039edf5e9 NO-ISSUE build: update app version
All checks were successful
Frontend CI / build (push) Successful in 1m7s
Deployment / deployment (release) Successful in 7m24s
PR Title Check / pr-title-check (pull_request) Successful in 16s
2025-07-24 23:40:40 +08:00
3cb69f6e7c BLOG-45 Post content page (#67)
All checks were successful
Frontend CI / build (push) Successful in 1m8s
### Description

- Implement the content page
  - Parse markdown formant content to html by `markdown-it`
  - Use `sanitize-html` to prevent from XSS attack
  - Style the html with `tailwindcss-typography`
- Fix the issue when backend parse the password to url
- Fix and make the post info list from backend always sorted by id

### Package Changes

### Rust

```toml
percent-encoding = "2.3.1"
```

### Node

```json
{
  "@types/markdown-it": "^14.1.2",
  "@types/sanitize-html": "^2.16.0",
  "markdown-it": "^14.1.0",
  "sanitize-html": "^2.17.0"
}
```

### Screenshots

|Desktop|Mobile|
|-|-|
|![image.png](/attachments/0ec5718a-f804-432f-8e4b-e9dc22c080d2)|![beta.squidspirit.com_post(iPhone 12 Pro) (1).png](/attachments/b30d1b96-d4a4-4b2b-b9bd-90fd2592ab52)|

### Reference

Resolves #45

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #67
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-24 22:20:58 +08:00
4a924c1b92 BLOG-65 Establish beta environment (#66)
All checks were successful
Frontend CI / build (push) Successful in 1m4s
### Description

- Change some environment variables implementation
- Nginx configuration:

  ```nginx
  server {
      server_name beta.squidspirit.com;

      proxy_pass_request_headers on;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      location / {
          proxy_pass http://127.0.0.1:10013/;
      }

      location /api/ {
          proxy_pass http://127.0.0.1:10014/;
      }

      listen 443 ssl; # managed by Certbot
      ssl_certificate /etc/letsencrypt/live/beta.squidspirit.com/fullchain.pem; # managed by Certbot
      ssl_certificate_key /etc/letsencrypt/live/beta.squidspirit.com/privkey.pem; # managed by Certbot
      include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
      ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
  }

  server {
      if ($host = beta.squidspirit.com) {
          return 301 https://$host$request_uri;
      } # managed by Certbot

      server_name beta.squidspirit.com;
      listen 80;
      return 404; # managed by Certbot
  }
  ```

- Podman kube configuration:

  ```yaml
    apiVersion: v1
  kind: Secret
  metadata:
    name: beta-blog-secret
  data:
    DATABASE_PASSWORD: {{BASE64_PASSWORD}}

  ---

  apiVersion: v1
  kind: Pod
  metadata:
    name: beta-blog
  spec:
    containers:
      - name: postgres
        image: docker.io/library/postgres:17-alpine
        imagePullPolicy: always
        env:
          - name: POSTGRES_PASSWORD
            valueFrom:
              secretKeyRef:
                name: beta-blog-secret
                key: DATABASE_PASSWORD
        volumeMounts:
          - name: beta-blog-postgres
            mountPath: /var/lib/postgresql/data
      - name: backend
        image: registry.squidspirit.com/squid/beta-blog-backend:latest
        imagePullPolicy: always
        env:
          - name: DATABASE_PASSWORD
            valueFrom:
              secretKeyRef:
                name: beta-blog-secret
                key: DATABASE_PASSWORD
        volumeMounts:
          - name: beta-blog-localtime
            mountPath: /etc/localtime
            readonly: true
        ports:
          - hostPort: 10014
            hostIP: 127.0.0.1
            containerPort: 8080
      - name: frontend
        image: registry.squidspirit.com/squid/beta-blog-frontend:latest
        imagePullPolicy: always
        env:
          - name: PUBLIC_API_BASE_URL
            value: https://beta.squidspirit.com/api/
        volumeMounts:
          - name: beta-blog-localtime
            mountPath: /etc/localtime
            readonly: true
        ports:
          - hostPort: 10013
            hostIP: 127.0.0.1
            containerPort: 3000
    volumes:
      - name: beta-blog-localtime
        hostPath:
          path: /etc/localtime
      - name: beta-blog-postgres
        persistentVolumeClaim:
          claimName: beta-blog-postgres
  ```

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #65

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #66
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-24 02:23:44 +08:00
c2462fe537 BLOG-44 Post overall page (#64)
All checks were successful
Frontend CI / build (push) Successful in 1m6s
### Description

- Change the format of color response

  ```json
  {
    "red": 0,
    "green": 255,
    "blue": 128,
    "alpha": 255
  }
  ```

- The relationship between the label's background color and its highlight color is calculated. The method involves first converting the RGB color value to HSL, then decreasing the L (lightness) component, and finally converting it back to RGB.

### Package Changes

```json
{
  "zod": "^4.0.5"
}
```

### Screenshots

|Desktop|Mobile|
|-|-|
|![image.png](/attachments/851450c4-0975-4b66-9bf7-606d0114c03e)|![image.png](/attachments/f263d65c-89e9-4439-8d50-ae92ae9482ac)|

### Reference

Resolves #44

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #64
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-24 00:32:20 +08:00
f66f4ecc79 BLOG-62 Custom not found page (#63)
All checks were successful
Frontend CI / build (push) Successful in 1m0s
### Description

As the title.

### Package Changes

_No response_

### Screenshots

![image.png](/attachments/536ca4c6-1043-46bb-b1f0-1614f8501f9f)

### Reference

Resolves #62

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #63
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-07-23 05:49:46 +08:00
06c66e1a18 BLOG-58 fix: eslint error
All checks were successful
Frontend CI / build (push) Successful in 1m3s
PR Title Check / pr-title-check (pull_request) Successful in 16s
2025-07-23 05:32:35 +08:00
f195b9c108 BLOG-58 refactor: run format
Some checks failed
Frontend CI / build (push) Failing after 1m3s
PR Title Check / pr-title-check (pull_request) Successful in 13s
2025-07-23 05:27:46 +08:00
eb4b2f4d6a BLOG-58 refactor: remove nextjs code
Some checks failed
PR Title Check / pr-title-check (pull_request) Successful in 13s
Frontend CI / build (push) Failing after 44s
2025-07-23 05:19:36 +08:00
93f1bee0ae NO-ISSUE Upgrade version to 0.1.1 (#42)
All checks were successful
Frontend CI / build (push) Successful in 1m26s
Deployment / frontend-deployment (release) Successful in 2m3s
PR Title Check / pr-title-check (pull_request) Successful in 13s
### Description

As the title.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

_No issue_

### Checklist

- [x] A milestone is set
- [ ] The related issuse has been linked to this branch

Reviewed-on: #42
Reviewed-by: zoe <zoe@noreply.localhost>
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-28 13:30:27 +08:00
35af8fd090 BLOG-9 Automatical deployment (#33)
All checks were successful
Frontend CI / build (push) Successful in 1m27s
### Description

- Create a Dockerfile to build the docker image.
- Set up the workflow to run deployment, which is to build and upload image to remote registry.
- Add a head meta html tag to show the version.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #9

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #33
Reviewed-by: zoe <zoe@noreply.localhost>
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-25 00:03:55 +08:00
c4535ce399 BLOG-11 Custom favicon and logo (#32)
All checks were successful
Frontend CI / build (push) Successful in 1m34s
### Description

- Design and apply a custom icon to favicon and navbar logo.
- For the favicon, it can be changed by the browser theme (dark or light.)

### Package Changes

_No response_

### Screenshots

| Desktop | Mobile |
| --- | --- |
| ![image.png](/attachments/43c0a475-6bff-4248-afca-1448c6c44b16) | ![image.png](/attachments/847fd38e-3e1e-450f-949a-91ee7fd17581) |

### Reference

Resolves #11

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #32
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-24 01:35:19 +08:00
Zoe
2cd16fe9a2 BLOG-27 Add the different size shadows of the home page terminal (#31)
All checks were successful
Frontend CI / build (push) Successful in 1m21s
### Description

Add the shadow(moblie: shadow-lg & desktop: shadow-xl) of the home page terminal

### Package Changes

_No response_

### Screenshots

| Moblie | Desktop |
| --- | --- |
| <img src="/attachments/fd95d222-0b57-4d99-aaec-68c78b9cf9e7" width="400" />  | ![image.png](/attachments/b81c0868-901e-4596-a31a-0172ee368bf1) |

### Reference

Resolves #27

### Checklist

- [x] A milestone is set
- [x] The related issuse has been linked to this branch

Reviewed-on: #31
Reviewed-by: squid <squid@squidspirit.com>
Co-authored-by: Zoe <7711zoe@gmail.com>
Co-committed-by: Zoe <7711zoe@gmail.com>
2025-01-21 23:21:17 +08:00
0e08db5c34 BLOG-7_home_page_about_me (#26)
All checks were successful
Frontend CI / build (push) Successful in 1m22s
### Description

- Implement the home page about me section
  - Terminal styled self introduction
  - Animated Motto

### Package Changes

_No response_

### Screenshots

| Desktop (2K 2160x1440) | Mobile (iPhone16 Pro 390x844) |
| --- | --- |
| <video src="attachments/a6ce3af0-1f25-4f79-89af-191e2148949f" title="Screencast From 2025-01-20 03-23-37.mp4" controls></video> | <video src="attachments/59e4ae24-dc16-4a56-88a9-11b9912c8fd4" title="Screencast From 2025-01-20 03-32-20.mp4" controls></video> |

### Reference

Resolves #7

### Checklist

- [x] A milestone is set

Reviewed-on: #26
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-20 03:35:28 +08:00
741d92ff15 BLOG-24 Create robots.txt (#25)
All checks were successful
Frontend CI / build (push) Successful in 1m20s
### Description

- As the title.

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #

### Checklist

- [x] A milestone is set

Reviewed-on: #25
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-19 22:12:04 +08:00
Zoe
426d569820 BLOG-14 Create not found page (#23)
All checks were successful
Frontend CI / build (push) Successful in 1m19s
### Description

- Add Not Found Page
- Change the home page h1 font weight
- Change the order of Prettier plugins to fix the issue of tailwind css not being sorted

### Package Changes

_No response_

### Screenshots

| Desktop (FHD 1920x1080) | Mobile (iPhone16 Pro 390x844) |
| --- | --- |
| ![image.png](/attachments/d3863cb9-f834-4c42-a45e-c08feacdbe0f) | <img src="/attachments/6d3f21fe-a01b-4f02-86e1-9f917345e796" width="400" /> |

### Reference

Resolves #14

### Checklist

- [x] A milestone is set

Reviewed-on: #23
Reviewed-by: squid <squid@squidspirit.com>
Co-authored-by: Zoe <7711zoe@gmail.com>
Co-committed-by: Zoe <7711zoe@gmail.com>
2025-01-19 22:00:49 +08:00
1b48a61c05 BLOG-8 Set up gitea action (#22)
All checks were successful
Frontend CI / build (push) Successful in 1m20s
### Description

- I found a build error when setting up gitea action, which is caused by circular dependency.
- We couldn't call dispatch in reducer, so something like streaming, delay, set interval could not be use in reducer directly.
- As for async function, we can use [`createAsyncTank`](https://redux-toolkit.js.org/api/createAsyncThunk).

### Package Changes

_No response_

### Screenshots

_No response_

### Reference

Resolves #8

### Checklist

- [x] A milestone is set

Reviewed-on: #22
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-18 19:59:52 +08:00
bbfe40e521 BLOG-19 Setting up prettier and sort the import order (#21)
### Description

- Setup prettier for sort the import order
- Apply re-ordering

### Package Changes

- "@trivago/prettier-plugin-sort-imports": "^5.2.1"

### Screenshots

_No response_

### Reference

Resolves #19

### Checklist

- [x] A milestone is set

Reviewed-on: #21
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-18 15:13:15 +08:00
75bb3fbeba BLOG-13 Add link to footer icons (#18)
- squid 3853160bf3 BLOG-13 fix: add link to footer icons

Reviewed-on: #18
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-18 04:21:36 +08:00
fb3c204e76 BLOG-16 fix: build failed (#17)
- squid 389d4ef4a9 BLOG-16 fix: build failed

Reviewed-on: #17
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-18 03:59:16 +08:00
e12d815440 BLOG-5_apply_the_first_view (#15)
squid 756112cb21 BLOG-5 docs: add comment for next config
squid c16e3f29a0 BLOG-5 refactor: apply clean architecture directory structure
squid 7f1a202cc7 BLOG-5 feat: self tags animation
squid 738008b983 BLOG-5 refactor: remove unused props definition
squid 90c8a2f627 BLOG-5 feat: home page fisrt view desktop layout
zoe d76f54b2b1 BLOG-5 feat: mobile home page first view

Reviewed-on: #15
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-18 03:41:56 +08:00
0ed7511119 BLOG-3 Implement web frontent navbar and footer (#12)
- BLOG-3 fix: remove unused action button
- BLOG-3 feat: footer ui
- BLOG-3 feat: navbar ui
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-17 01:48:41 +08:00
bacb018899 BLOG-1 Init frontend framework and libraries (#10)
Reviewed-on: #10
Co-authored-by: SquidSpirit <squid@squidspirit.com>
Co-committed-by: SquidSpirit <squid@squidspirit.com>
2025-01-16 15:49:25 +08:00