Skip to content

Commit 4fae39a

Browse files
committed
first commit
0 parents  commit 4fae39a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+29422
-0
lines changed

.env.example

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
S3_ENDPOINT=http://localhost:9010
2+
S3_BUCKET=app
3+
S3_ACCESS_KEY=minio
4+
S3_SECRET_KEY=password
5+
S3_REGION=ap-northeast-1

.github/workflows/test.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Test
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
test:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v3
10+
- name: setup Node.js
11+
uses: actions/setup-node@v3
12+
with:
13+
node-version: 24
14+
- uses: actions/cache@v4
15+
id: npm-cache
16+
with:
17+
path: 'node_modules'
18+
key: npm-${{ hashFiles('package-lock.json') }}
19+
- run: npm install
20+
if: steps.npm-cache.outputs.cache-hit != 'true'
21+
- run: npm run generate
22+
- run: npm run lint
23+
- run: npm run typecheck
24+
- run: cp .env.example .env
25+
- run: docker compose up -d
26+
- run: npm run build
27+
- run: npm test

.gitignore

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
6+
# next.js
7+
/.next/
8+
/out/
9+
10+
# production
11+
/build
12+
13+
# misc
14+
.DS_Store
15+
*.pem
16+
tsconfig.tsbuildinfo
17+
*.css.d.ts
18+
*.css.d.ts.map
19+
/coverage
20+
21+
# debug
22+
npm-debug.log*
23+
24+
# local env files
25+
.env
26+
.env.local
27+
.env.development.local
28+
.env.test.local
29+
.env.production.local
30+
31+
# vercel
32+
.vercel
33+
34+
# frourio
35+
**/$*.ts
36+
frourio.*.ts
37+
tests/setupMswHandlers.ts

.prettierrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"printWidth": 100,
3+
"singleQuote": true,
4+
"plugins": ["prettier-plugin-organize-imports"]
5+
}

.vscode/extensions.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"recommendations": [
3+
"dbaeumer.vscode-eslint",
4+
"esbenp.prettier-vscode",
5+
"stylelint.vscode-stylelint",
6+
"yoavbls.pretty-ts-errors"
7+
]
8+
}

.vscode/settings.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"eslint.run": "onSave",
3+
"editor.formatOnSave": true,
4+
"editor.defaultFormatter": "esbenp.prettier-vscode",
5+
"editor.codeActionsOnSave": {
6+
"source.fixAll.eslint": "explicit",
7+
"source.fixAll.stylelint": "explicit"
8+
},
9+
"typescript.tsdk": "node_modules/typescript/lib",
10+
"typescript.referencesCodeLens.enabled": true,
11+
"files.eol": "\n",
12+
"editor.tabSize": 2,
13+
"stylelint.validate": ["css"],
14+
15+
"files.insertFinalNewline": true,
16+
"files.trimTrailingWhitespace": true,
17+
"files.trimFinalNewlines": true,
18+
19+
"explorer.fileNesting.enabled": true,
20+
"explorer.fileNesting.patterns": {
21+
"*.module.css": "${capture}.module.css.d.ts, ${capture}.module.css.d.ts.map",
22+
"*.ts": "${capture}.test.ts",
23+
"*.tsx": "${capture}.test.tsx",
24+
"frourio.ts": "frourio.*.ts"
25+
}
26+
}

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2+
3+
## Getting Started
4+
5+
First, run the development server:
6+
7+
```bash
8+
npm run dev
9+
```
10+
11+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
12+
13+
You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file.
14+
15+
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`.
16+
17+
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
18+
19+
## Learn More
20+
21+
To learn more about Next.js, take a look at the following resources:
22+
23+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
24+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
25+
26+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
27+
28+
## Deploy on Vercel
29+
30+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
31+
32+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.

compose.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
services:
2+
minio:
3+
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
4+
ports:
5+
- 9010:9000 # Storage
6+
- 9011:9001 # Console
7+
environment:
8+
MINIO_ROOT_USER: minio
9+
MINIO_ROOT_PASSWORD: password
10+
volumes:
11+
- minio:/data
12+
entrypoint: []
13+
command: minio server /data --address :9000 --console-address :9001
14+
healthcheck:
15+
test: bash -c ':> /dev/tcp/127.0.0.1/9000' || exit 1
16+
timeout: 5s
17+
interval: 5s
18+
19+
mc:
20+
image: minio/mc:RELEASE.2023-08-18T21-57-55Z
21+
depends_on:
22+
minio:
23+
condition: service_healthy
24+
environment:
25+
S3_BUCKET: app
26+
S3_REGION: ap-northeast-1
27+
MINIO_ROOT_USER: minio
28+
MINIO_ROOT_PASSWORD: password
29+
entrypoint: []
30+
command: |
31+
sh -c "
32+
mc alias set myminio http://minio:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD
33+
mc mb myminio/$$S3_BUCKET --region=$$S3_REGION || true
34+
mc anonymous set download myminio/$$S3_BUCKET
35+
"
36+
37+
volumes:
38+
minio:
39+
driver: local

eslint.config.ts

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import js from '@eslint/js';
2+
import gitignore from 'eslint-config-flat-gitignore';
3+
import prettierConfig from 'eslint-config-prettier';
4+
import reactPlugin from 'eslint-plugin-react';
5+
import reactHooks from 'eslint-plugin-react-hooks';
6+
import globals from 'globals';
7+
import tseslint from 'typescript-eslint';
8+
9+
export default tseslint.config(
10+
gitignore(),
11+
js.configs.recommended,
12+
tseslint.configs.recommendedTypeChecked,
13+
{
14+
languageOptions: {
15+
parserOptions: {
16+
projectService: true,
17+
tsconfigRootDir: import.meta.dirname,
18+
},
19+
globals: { ...globals.browser, ...globals.node, ...globals.es2020 },
20+
},
21+
rules: {
22+
eqeqeq: 'error',
23+
'no-param-reassign': 'error',
24+
'object-shorthand': ['error', 'always'],
25+
'prefer-template': 'error',
26+
'@typescript-eslint/consistent-type-imports': 'error',
27+
'@typescript-eslint/explicit-module-boundary-types': 'off',
28+
'@typescript-eslint/no-non-null-assertion': 'error',
29+
'@typescript-eslint/no-explicit-any': 'error',
30+
'@typescript-eslint/explicit-function-return-type': 'error',
31+
'@typescript-eslint/no-unnecessary-condition': 'error',
32+
complexity: ['error', 5],
33+
'max-depth': ['error', 2],
34+
'max-nested-callbacks': ['error', 3],
35+
'max-lines': ['error', 200],
36+
'func-style': ['error', 'declaration', { allowArrowFunctions: false }],
37+
'@typescript-eslint/no-unused-vars': [
38+
'error',
39+
{
40+
argsIgnorePattern: '^_',
41+
varsIgnorePattern: '^_',
42+
caughtErrorsIgnorePattern: '^_',
43+
destructuredArrayIgnorePattern: '^_',
44+
},
45+
],
46+
},
47+
},
48+
{
49+
files: ['**/*.tsx'],
50+
plugins: {
51+
react: reactPlugin,
52+
'react-hooks': reactHooks,
53+
},
54+
settings: {
55+
react: { version: 'detect' },
56+
},
57+
rules: {
58+
'react/react-in-jsx-scope': 'off',
59+
'react/jsx-uses-react': 'off',
60+
'react/prop-types': 'off',
61+
'@typescript-eslint/no-misused-promises': 'off',
62+
'@typescript-eslint/no-non-null-assertion': 'off',
63+
'react/self-closing-comp': 'error',
64+
'react-hooks/rules-of-hooks': 'error',
65+
'react-hooks/exhaustive-deps': 'error',
66+
},
67+
},
68+
{
69+
files: ['src/app/**/route.ts'],
70+
rules: { '@typescript-eslint/require-await': 'off' },
71+
},
72+
{
73+
files: ['tests/**/*.{ts,tsx}', '**/*.test.{ts,tsx}'],
74+
rules: {
75+
'@typescript-eslint/no-non-null-assertion': 'off',
76+
'@typescript-eslint/require-await': 'off',
77+
'no-restricted-syntax': [
78+
'error',
79+
{ selector: 'OptionalChain', message: 'Optional chaining (?.) is not allowed.' },
80+
],
81+
},
82+
},
83+
prettierConfig,
84+
);

mdx-components.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import type { MDXComponents } from 'mdx/types';
2+
3+
export function useMDXComponents(components: MDXComponents): MDXComponents {
4+
return {
5+
...components,
6+
};
7+
}

0 commit comments

Comments
 (0)