Skip to content
Open

init #276

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
f720412
Initial commit
nodaguti Mar 20, 2026
81677b8
ci: switch to pull_request_target for deployments from forked reposit…
sor4chi Mar 20, 2026
4cee006
Merge pull request #22 from CyberAgentHack/sor4chi/cd-fix-1
sor4chi Mar 20, 2026
e2ee7b9
init
yuta-ike Mar 20, 2026
dffc8fe
- webpack to vite移行(buildは動作未確認)
yuta-ike Mar 20, 2026
3878575
feat: Docker image を local build 形式に変更
re-taro Mar 20, 2026
93316d9
Merge pull request #185 from CyberAgentHack/refactor/local-build-image
re-taro Mar 20, 2026
5a08e28
fix: 計測 repo を分けました
re-taro Mar 20, 2026
03d4b9e
Merge pull request #195 from CyberAgentHack/hotfix/deploy-and-scoring
re-taro Mar 20, 2026
358c23b
fix: docker の tag PR head の SHA
re-taro Mar 20, 2026
697e7ae
Merge pull request #222 from CyberAgentHack/hotfix/docker-tag
re-taro Mar 20, 2026
d70dc79
fix: checkout する repository を fork 先のものに
re-taro Mar 20, 2026
4c51b08
Merge pull request #227 from CyberAgentHack/hotfix/fork-git-repo
shun-shobon Mar 20, 2026
52dfbe5
fix: docker build push action に渡す context を指定
re-taro Mar 20, 2026
0286577
Merge pull request #230 from CyberAgentHack/hotfix/docker-context
re-taro Mar 20, 2026
a0d5a9e
- 検索画面のネガポジ判定をバックエンドに移行
yuta-ike Mar 20, 2026
5ac6841
Merge remote-tracking branch 'upstream/main'
yuta-ike Mar 20, 2026
bedc5fa
- negaposiにクライアントキャッシュを実装
yuta-ike Mar 20, 2026
9baa7dc
- 画像をobject-coverを使う形に
yuta-ike Mar 20, 2026
2a75cc0
- AspectRatioBoxでCSSを使うように
yuta-ike Mar 20, 2026
ba26f9e
- fetchBinaryをネイティブfetchに変更
yuta-ike Mar 20, 2026
af50644
- Soundplayerのレイアウトシフトを除去
yuta-ike Mar 20, 2026
3828884
- AspectRatioBoxを削除
yuta-ike Mar 20, 2026
f2c1133
- fetchJSONをネイティブfetchに
yuta-ike Mar 20, 2026
16a0869
- exifの取得をバックエンドに移す
yuta-ike Mar 20, 2026
a486bed
- シンプルな無限スクロールを実装
yuta-ike Mar 20, 2026
884cf6f
- 画像の遅延ロードを設定
yuta-ike Mar 20, 2026
ba95ed1
- 画像をwebpに変更
yuta-ike Mar 20, 2026
a5da222
- 動画をgifからvideoタグに変更。gif変換ロジックを削除
yuta-ike Mar 20, 2026
db24bc3
- 動画の遅延ロードを追加
yuta-ike Mar 20, 2026
0bde769
Remove LFS and add as normal file
yuta-ike Mar 20, 2026
dbf394e
- 動画のサイズを圧縮
yuta-ike Mar 20, 2026
3a491d6
- InfiniteScrollのパフォーマンス改善
yuta-ike Mar 20, 2026
ef61835
- bundle analyzer を追加
yuta-ike Mar 20, 2026
1304c65
- 音声波形のリファクタ
yuta-ike Mar 20, 2026
c8a4d21
- プロフィール画像のサイズ調整・遅延ロード
yuta-ike Mar 20, 2026
6623556
- SoundPlayerをちょっと改善
yuta-ike Mar 20, 2026
bc13489
- altのシード値を追加
yuta-ike Mar 20, 2026
96f4b0d
- Conversationの取得のクエリを改善 & インデックスを追加
yuta-ike Mar 20, 2026
92205db
- React Router の Link を使うように変更
yuta-ike Mar 20, 2026
61fc493
- UserProfileHeaderで背景色の抽出ができていなかったバグを修正
yuta-ike Mar 20, 2026
3134773
- 組み込みのtranslatorを使う
yuta-ike Mar 20, 2026
f0ea5f6
- Rei no Are Mincho のサブセットを参照するように変更
yuta-ike Mar 20, 2026
0d4db6c
- react-helmetを削除
yuta-ike Mar 20, 2026
595e49a
- typingのリクエストをthrottlingする
yuta-ike Mar 20, 2026
bad83df
- jquery, pakoをネイティブfetchに置換
yuta-ike Mar 20, 2026
af9cd97
update lockfile
yuta-ike Mar 20, 2026
c80f58b
Merge remote-tracking branch 'upstream/main'
yuta-ike Mar 20, 2026
8c9c7ac
fix: remove unused file
yuta-ike Mar 20, 2026
d4f3458
fix: dockerfile
yuta-ike Mar 20, 2026
f35f427
fix: dockerignore
yuta-ike Mar 20, 2026
95e5488
fix: css
yuta-ike Mar 20, 2026
d1ed150
- 動画のサムネイルを追加
yuta-ike Mar 21, 2026
a1ec579
fix
yuta-ike Mar 21, 2026
6a0656a
fix
yuta-ike Mar 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ node_modules
.git
*.log

application/server/seeds
application/server/upload
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
application/server/database.sqlite !text !filter !merge !diff
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ COPY ./application .

RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm build

RUN pnpm --filter @web-speed-hackathon-2026/server seed:insert

RUN --mount=type=cache,target=/pnpm/store CI=true pnpm install --frozen-lockfile --prod --filter @web-speed-hackathon-2026/server

FROM base
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,5 @@ https://github.com/CyberAgentHack/web-speed-hackathon-2026-scoring/issues/new?te
- (Original Font) Source Han Serif JP: OFT 1.1 by Adobe http://www.adobe.com/
- Text
- 太宰治『走れメロス』(1940年)

deploy
3 changes: 3 additions & 0 deletions application/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -216,3 +216,6 @@ $RECYCLE.BIN/
*.lnk

# End of https://www.toptal.com/developers/gitignore/api/node,macos,linux,windows

.tanstack
.output
16 changes: 16 additions & 0 deletions application/client/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!doctype html>
<html lang="ja">

<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CaX</title>
<link rel="stylesheet" href="./src/style.css" />
</head>

<body class="bg-cax-canvas text-cax-text">
<div id="app"></div>
<script type="module" src="./src/index.tsx"></script>
</body>

</html>
55 changes: 22 additions & 33 deletions application/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,29 @@
"license": "MPL-2.0",
"author": "CyberAgent, Inc.",
"scripts": {
"build": "NODE_ENV=development webpack",
"dev": "vite",
"build": "vite build",
"start:webpack": "webpack serve",
"build:webpack": "NODE_ENV=development webpack",
"typecheck": "tsc"
},
"dependencies": {
"@ffmpeg/core": "0.12.10",
"@ffmpeg/ffmpeg": "0.12.15",
"@imagemagick/magick-wasm": "0.0.37",
"@mlc-ai/web-llm": "0.2.80",
"@fortawesome/fontawesome-free": "7.2.0",
"@tanstack/react-query": "5.91.3",
"@tanstack/react-router": "1.168.1",
"@tanstack/react-router-ssr-query": "1.166.10",
"@web-speed-hackathon-2026/client": "workspace:*",
"bayesian-bm25": "0.4.0",
"bluebird": "3.7.2",
"buffer": "6.0.3",
"classnames": "2.5.1",
"common-tags": "1.8.2",
"core-js": "3.45.1",
"date-fns": "4.1.0",
"encoding-japanese": "2.2.0",
"fast-average-color": "9.5.0",
"gifler": "github:themadcreator/gifler#v0.3.0",
"image-size": "2.0.2",
"jquery": "3.7.1",
"jquery-binarytransport": "1.0.0",
"json-repair-js": "1.0.0",
"katex": "0.16.25",
"kuromoji": "0.1.2",
"langs": "2.0.0",
"lodash": "4.17.21",
"moment": "2.30.1",
"negaposi-analyzer-ja": "1.0.1",
"normalize.css": "8.0.1",
"omggif": "1.0.10",
"pako": "2.1.0",
"piexifjs": "1.0.6",
"react": "19.2.0",
"react-dom": "19.2.0",
"react-helmet": "npm:@dr.pogodin/react-helmet@3.0.4",
"react-redux": "9.2.0",
"react-router": "7.9.4",
"react-syntax-highlighter": "16.1.0",
Expand All @@ -48,32 +36,26 @@
"regenerator-runtime": "0.14.1",
"rehype-katex": "7.0.1",
"remark-gfm": "4.0.1",
"remark-math": "6.0.0",
"standardized-audio-context": "25.3.77",
"tiny-invariant": "1.3.3"
"remark-math": "6.0.0"
},
"devDependencies": {
"@babel/core": "7.28.4",
"@babel/preset-env": "7.28.3",
"@babel/preset-react": "7.27.1",
"@babel/preset-typescript": "7.27.1",
"@rolldown/plugin-babel": "0.2.2",
"@tailwindcss/vite": "4.2.2",
"@tanstack/router-plugin": "1.167.2",
"@tsconfig/strictest": "2.0.8",
"@types/bluebird": "3.5.42",
"@types/common-tags": "1.8.4",
"@types/encoding-japanese": "2.2.1",
"@types/jquery": "3.5.33",
"@types/kuromoji": "0.1.3",
"@types/langs": "2.0.5",
"@types/lodash": "4.17.20",
"@types/node": "22.18.8",
"@types/omggif": "1.0.5",
"@types/pako": "2.0.4",
"@types/piexifjs": "1.0.0",
"@types/react": "19.2.2",
"@types/react-dom": "19.2.1",
"@types/react-syntax-highlighter": "15.5.13",
"@types/redux-form": "^8.3.11",
"@vitejs/plugin-react": "6.0.1",
"babel-loader": "10.0.0",
"baseline-browser-mapping": "2.10.9",
"copy-webpack-plugin": "13.0.1",
"css-loader": "7.1.2",
"html-webpack-plugin": "5.6.4",
Expand All @@ -83,13 +65,20 @@
"postcss-loader": "8.2.0",
"postcss-preset-env": "10.4.0",
"react-markdown": "10.1.0",
"rollup-plugin-visualizer": "7.0.1",
"tailwindcss": "4.2.2",
"typescript": "5.9.3",
"vite": "8.0.1",
"vite-bundle-analyzer": "1.3.6",
"webpack": "5.102.1",
"webpack-cli": "6.0.1",
"webpack-dev-server": "5.2.2"
},
"engines": {
"node": "24.14.0"
},
"volta": {
"node": "24.14.0"
},
"packageManager": "pnpm@10.32.1"
}
7 changes: 4 additions & 3 deletions application/client/src/auth/validation.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { FormErrors } from "redux-form";
import type { FormErrors } from "redux-form";

import { AuthFormData } from "@web-speed-hackathon-2026/client/src/auth/types";
import type { AuthFormData } from "@web-speed-hackathon-2026/client/src/auth/types";

export const validate = (values: AuthFormData): FormErrors<AuthFormData> => {
const errors: FormErrors<AuthFormData> = {};
Expand All @@ -21,7 +21,8 @@ export const validate = (values: AuthFormData): FormErrors<AuthFormData> => {
}

if (!/^[a-zA-Z0-9_]*$/.test(normalizedUsername)) {
errors.username = "ユーザー名に使用できるのは英数字とアンダースコア(_)のみです";
errors.username =
"ユーザー名に使用できるのは英数字とアンダースコア(_)のみです";
}
if (normalizedUsername.length === 0) {
errors.username = "ユーザー名を入力してください";
Expand Down
14 changes: 0 additions & 14 deletions application/client/src/buildinfo.ts

This file was deleted.

8 changes: 6 additions & 2 deletions application/client/src/components/application/AccountMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,12 @@ export const AccountMenu = ({ user, onLogout }: Props) => {
src={getProfileImagePath(user.profileImage.id)}
/>
<div className="hidden min-w-0 flex-1 text-left lg:block">
<div className="text-cax-text truncate text-sm font-bold">{user.name}</div>
<div className="text-cax-text-muted truncate text-sm">@{user.username}</div>
<div className="text-cax-text truncate text-sm font-bold">
{user.name}
</div>
<div className="text-cax-text-muted truncate text-sm">
@{user.username}
</div>
</div>
<span className="text-cax-text-muted hidden lg:block">···</span>
</button>
Expand Down
13 changes: 2 additions & 11 deletions application/client/src/components/application/AppPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,15 @@ import type { ReactNode } from "react";
import { Navigation } from "@web-speed-hackathon-2026/client/src/components/application/Navigation";

interface Props {
activeUser: Models.User | null;
children: ReactNode;
authModalId: string;
newPostModalId: string;
onLogout: () => void;
}

export const AppPage = ({ activeUser, children, authModalId, newPostModalId, onLogout }: Props) => {
export const AppPage = ({ children }: Props) => {
return (
<div className="relative z-0 flex justify-center font-sans">
<div className="bg-cax-surface text-cax-text flex min-h-screen max-w-full">
<aside className="relative z-10">
<Navigation
activeUser={activeUser}
authModalId={authModalId}
newPostModalId={newPostModalId}
onLogout={onLogout}
/>
<Navigation />
</aside>
<main className="relative z-0 w-screen max-w-screen-sm min-w-0 shrink pb-12 lg:pb-0">
{children}
Expand Down
Loading
Loading