Skip to content

Commit 8a2a1fb

Browse files
authored
Merge pull request #61 from aramb-dev/refactor/full-rehaul
refactor: full app rehaul — route-based architecture, component extraction, and UI unification
2 parents 6a7775d + dff58b4 commit 8a2a1fb

141 files changed

Lines changed: 7557 additions & 25232 deletions

File tree

Some content is hidden

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

.env.example

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,5 @@ NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=
66
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
77
NEXT_PUBLIC_FIREBASE_APP_ID=
88

9-
PRINTERZ_API_KEY=
109
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID=
1110
NEXT_PUBLIC_MICROSOFT_CLARITY_ID=
12-
NEXT_PUBLIC_PRINTERZ_TEMPLATE_ID=

.github/workflows/biome.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Biome
2+
3+
on:
4+
push:
5+
branches:
6+
- "**"
7+
pull_request:
8+
branches:
9+
- "**"
10+
11+
jobs:
12+
biome:
13+
name: biome ci
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: oven-sh/setup-bun@v2
20+
with:
21+
bun-version: "1.x"
22+
cache: true
23+
24+
- name: Install dependencies
25+
run: bun install --frozen-lockfile
26+
27+
- name: Lint & format check
28+
run: bun run ci

.github/workflows/typecheck.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
name: Typecheck
2+
3+
on:
4+
push:
5+
branches:
6+
- "**"
7+
pull_request:
8+
branches:
9+
- "**"
10+
11+
jobs:
12+
typecheck:
13+
name: tsc --noEmit
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- uses: oven-sh/setup-bun@v2
20+
with:
21+
bun-version: "1.x"
22+
cache: true
23+
24+
- name: Install dependencies
25+
run: bun install --frozen-lockfile
26+
27+
- name: Type check
28+
run: bun x tsc --noEmit --ignoreDeprecations 6.0

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ node_modules
1111
dist
1212
dist-ssr
1313
*.local
14+
package-lock.json
1415

1516
# Editor directories and files
1617
.vscode/*

biome.json

Lines changed: 311 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,311 @@
1+
{
2+
"$schema": "https://biomejs.dev/schemas/2.4.13/schema.json",
3+
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
4+
"files": { "ignoreUnknown": false },
5+
"formatter": {
6+
"enabled": true,
7+
"formatWithErrors": false,
8+
"indentStyle": "space",
9+
"indentWidth": 2,
10+
"lineEnding": "lf",
11+
"lineWidth": 80,
12+
"attributePosition": "auto",
13+
"bracketSameLine": false,
14+
"bracketSpacing": true,
15+
"expand": "auto",
16+
"useEditorconfig": true
17+
},
18+
"linter": {
19+
"enabled": true,
20+
"rules": {
21+
"recommended": false,
22+
"complexity": {
23+
"noAdjacentSpacesInRegex": "error",
24+
"noExtraBooleanCast": "error",
25+
"noUselessCatch": "error",
26+
"noUselessEscapeInRegex": "error",
27+
"noUselessTypeConstraint": "error"
28+
},
29+
"correctness": {
30+
"noConstAssign": "error",
31+
"noConstantCondition": "error",
32+
"noEmptyCharacterClassInRegex": "error",
33+
"noEmptyPattern": "error",
34+
"noGlobalObjectCalls": "error",
35+
"noInvalidBuiltinInstantiation": "error",
36+
"noInvalidConstructorSuper": "error",
37+
"noNonoctalDecimalEscape": "error",
38+
"noPrecisionLoss": "error",
39+
"noSelfAssign": "error",
40+
"noSetterReturn": "error",
41+
"noSwitchDeclarations": "error",
42+
"noUndeclaredVariables": "error",
43+
"noUnreachable": "error",
44+
"noUnreachableSuper": "error",
45+
"noUnsafeFinally": "error",
46+
"noUnsafeOptionalChaining": "error",
47+
"noUnusedLabels": "error",
48+
"noUnusedPrivateClassMembers": "error",
49+
"noUnusedVariables": "error",
50+
"useIsNan": "error",
51+
"useValidForDirection": "error",
52+
"useValidTypeof": "error",
53+
"useYield": "error"
54+
},
55+
"style": {
56+
"noCommonJs": "error",
57+
"noNamespace": "error",
58+
"useArrayLiterals": "error",
59+
"useAsConstAssertion": "error"
60+
},
61+
"suspicious": {
62+
"noAsyncPromiseExecutor": "error",
63+
"noCatchAssign": "error",
64+
"noClassAssign": "error",
65+
"noCompareNegZero": "error",
66+
"noConstantBinaryExpressions": "error",
67+
"noControlCharactersInRegex": "error",
68+
"noDebugger": "error",
69+
"noDuplicateCase": "error",
70+
"noDuplicateClassMembers": "error",
71+
"noDuplicateElseIf": "error",
72+
"noDuplicateObjectKeys": "error",
73+
"noDuplicateParameters": "error",
74+
"noEmptyBlockStatements": "error",
75+
"noExplicitAny": "error",
76+
"noExtraNonNullAssertion": "error",
77+
"noFallthroughSwitchClause": "error",
78+
"noFunctionAssign": "error",
79+
"noGlobalAssign": "error",
80+
"noImportAssign": "error",
81+
"noIrregularWhitespace": "error",
82+
"noMisleadingCharacterClass": "error",
83+
"noMisleadingInstantiator": "error",
84+
"noNonNullAssertedOptionalChain": "error",
85+
"noPrototypeBuiltins": "error",
86+
"noRedeclare": "error",
87+
"noShadowRestrictedNames": "error",
88+
"noSparseArray": "error",
89+
"noUnassignedVariables": "error",
90+
"noUnsafeDeclarationMerging": "error",
91+
"noUnsafeNegation": "error",
92+
"noUnusedExpressions": "off",
93+
"noUselessRegexBackrefs": "error",
94+
"noWith": "error",
95+
"useGetterReturn": "error",
96+
"useNamespaceKeyword": "error"
97+
}
98+
},
99+
"includes": ["**", "!dist", "!.next", "!node_modules"]
100+
},
101+
"javascript": {
102+
"formatter": {
103+
"jsxQuoteStyle": "double",
104+
"quoteProperties": "asNeeded",
105+
"trailingCommas": "all",
106+
"semicolons": "asNeeded",
107+
"arrowParentheses": "always",
108+
"bracketSameLine": false,
109+
"quoteStyle": "double",
110+
"attributePosition": "auto",
111+
"bracketSpacing": true
112+
},
113+
"globals": []
114+
},
115+
"css": {
116+
"parser": {
117+
"cssModules": false,
118+
"allowWrongLineComments": true,
119+
"tailwindDirectives": true
120+
},
121+
"linter": { "enabled": true },
122+
"formatter": { "enabled": true }
123+
},
124+
"html": {
125+
"formatter": {
126+
"indentScriptAndStyle": false,
127+
"selfCloseVoidElements": "always"
128+
}
129+
},
130+
"overrides": [
131+
{
132+
"includes": ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"],
133+
"linter": {
134+
"rules": {
135+
"complexity": { "noArguments": "error" },
136+
"correctness": {
137+
"noConstAssign": "off",
138+
"noGlobalObjectCalls": "off",
139+
"noInvalidBuiltinInstantiation": "off",
140+
"noInvalidConstructorSuper": "off",
141+
"noSetterReturn": "off",
142+
"noUndeclaredVariables": "off",
143+
"noUnreachable": "off",
144+
"noUnreachableSuper": "off"
145+
},
146+
"style": { "useConst": "error" },
147+
"suspicious": {
148+
"noClassAssign": "off",
149+
"noDuplicateClassMembers": "off",
150+
"noDuplicateObjectKeys": "off",
151+
"noDuplicateParameters": "off",
152+
"noFunctionAssign": "off",
153+
"noImportAssign": "off",
154+
"noRedeclare": "off",
155+
"noUnsafeNegation": "off",
156+
"noVar": "error",
157+
"noWith": "off",
158+
"useGetterReturn": "off"
159+
}
160+
}
161+
}
162+
},
163+
{
164+
"includes": ["**/*.{js,jsx,ts,tsx}"],
165+
"javascript": {
166+
"globals": [
167+
"onanimationend",
168+
"exports",
169+
"ongamepadconnected",
170+
"onlostpointercapture",
171+
"onanimationiteration",
172+
"onkeyup",
173+
"onmousedown",
174+
"onanimationstart",
175+
"onslotchange",
176+
"onprogress",
177+
"ontransitionstart",
178+
"onpause",
179+
"onended",
180+
"onpointerover",
181+
"onscrollend",
182+
"onformdata",
183+
"ontransitionrun",
184+
"onanimationcancel",
185+
"ondrag",
186+
"onchange",
187+
"onbeforeinstallprompt",
188+
"onbeforexrselect",
189+
"onmessage",
190+
"ontransitioncancel",
191+
"onpointerdown",
192+
"onabort",
193+
"onpointerout",
194+
"oncuechange",
195+
"ongotpointercapture",
196+
"onscrollsnapchanging",
197+
"onsearch",
198+
"onsubmit",
199+
"onstalled",
200+
"onsuspend",
201+
"onreset",
202+
"onerror",
203+
"onresize",
204+
"onmouseenter",
205+
"ongamepaddisconnected",
206+
"ondragover",
207+
"onbeforetoggle",
208+
"onmouseover",
209+
"onpagehide",
210+
"onmousemove",
211+
"onratechange",
212+
"oncommand",
213+
"onmessageerror",
214+
"onwheel",
215+
"ondevicemotion",
216+
"onauxclick",
217+
"ontransitionend",
218+
"onpaste",
219+
"onpageswap",
220+
"ononline",
221+
"ondeviceorientationabsolute",
222+
"onkeydown",
223+
"onclose",
224+
"onselect",
225+
"onpageshow",
226+
"onpointercancel",
227+
"onbeforematch",
228+
"onpointerrawupdate",
229+
"ondragleave",
230+
"onscrollsnapchange",
231+
"onseeked",
232+
"onwaiting",
233+
"onbeforeunload",
234+
"onplaying",
235+
"onvolumechange",
236+
"ondragend",
237+
"onstorage",
238+
"onloadeddata",
239+
"onfocus",
240+
"onoffline",
241+
"onplay",
242+
"onafterprint",
243+
"onclick",
244+
"oncut",
245+
"onmouseout",
246+
"ondblclick",
247+
"oncanplay",
248+
"onloadstart",
249+
"onappinstalled",
250+
"onpointermove",
251+
"ontoggle",
252+
"oncontextmenu",
253+
"onblur",
254+
"oncancel",
255+
"onbeforeprint",
256+
"oncontextrestored",
257+
"onloadedmetadata",
258+
"onpointerup",
259+
"onlanguagechange",
260+
"oncopy",
261+
"onselectstart",
262+
"onscroll",
263+
"onload",
264+
"ondragstart",
265+
"onbeforeinput",
266+
"oncanplaythrough",
267+
"oninput",
268+
"oninvalid",
269+
"ontimeupdate",
270+
"ondurationchange",
271+
"onselectionchange",
272+
"onmouseup",
273+
"location",
274+
"onkeypress",
275+
"onpointerleave",
276+
"oncontextlost",
277+
"ondrop",
278+
"onsecuritypolicyviolation",
279+
"oncontentvisibilityautostatechange",
280+
"ondeviceorientation",
281+
"onseeking",
282+
"onrejectionhandled",
283+
"onunload",
284+
"onmouseleave",
285+
"onhashchange",
286+
"onpointerenter",
287+
"onmousewheel",
288+
"onunhandledrejection",
289+
"ondragenter",
290+
"onpopstate",
291+
"onpagereveal",
292+
"onemptied"
293+
]
294+
},
295+
"linter": {
296+
"rules": {
297+
"correctness": {
298+
"noUnusedVariables": "error",
299+
"useExhaustiveDependencies": "warn",
300+
"useHookAtTopLevel": "error"
301+
}
302+
}
303+
}
304+
},
305+
{ "includes": ["**/*.cjs"], "javascript": { "globals": ["exports"] } }
306+
],
307+
"assist": {
308+
"enabled": true,
309+
"actions": { "source": { "organizeImports": "on" } }
310+
}
311+
}

0 commit comments

Comments
 (0)