Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
c29e8a0
feat(server): vehicles soft delete
FLchs Jan 20, 2026
34bbc04
feat(server): operations soft delete
FLchs Jan 20, 2026
c0b0ef8
tests(server): update tests for soft deletion
FLchs Jan 20, 2026
942a757
feat(server): add documents entity
FLchs Jan 20, 2026
683f4b2
feat(validation): add documents schemas
FLchs Jan 20, 2026
0506b90
feat(contracts): add documents routes
FLchs Jan 20, 2026
fc307bf
feat(server): add documents service
FLchs Jan 20, 2026
7f8b612
feat(server): add documents to vehicles routes
FLchs Jan 20, 2026
005fa83
fix(server): remove unused fields
FLchs Jan 20, 2026
602e374
fix(server): type error
FLchs Jan 20, 2026
d99e3d2
feat(contracts): add documents contract and remove delete route from …
FLchs Jan 21, 2026
07e558c
feat(validation): add documents schema
FLchs Jan 21, 2026
325a264
feat(server): add FileError error class
FLchs Jan 21, 2026
bef8cea
feat(server): add file saving util
FLchs Jan 21, 2026
f92381b
feat(server): add documents service
FLchs Jan 21, 2026
e9bb602
feat(server): add documents routes
FLchs Jan 21, 2026
e4bf37a
refeactor(server): remove documents deletion from vehicles routes
FLchs Jan 21, 2026
6ad7e84
feat(server): serve uploaded files statically
FLchs Jan 21, 2026
b614702
chores(server): make errors pretty
FLchs Jan 21, 2026
d8d24c3
feat(web): add FileField form component
FLchs Jan 21, 2026
577940a
feat(web): add documents components
FLchs Jan 21, 2026
69a8819
feat(web): use documents components
FLchs Jan 21, 2026
17db9f9
feat(web): use new contract
FLchs Jan 21, 2026
ad2efe6
chores(web): update generated route tree
FLchs Jan 21, 2026
cada2cf
fix(web): operation validation
FLchs Jan 21, 2026
9fcd8d8
chores(server): add uploads to gitignore
FLchs Jan 21, 2026
2b84f6e
tests(server): improve new document test
FLchs Jan 21, 2026
7303b04
feat(db): add documentType
FLchs Jan 22, 2026
f94d0cf
feat(server): add documents types
FLchs Jan 22, 2026
7044974
chores(validation): correctly validate documents types
FLchs Jan 22, 2026
c14981d
feat(web): basic document type implementation
FLchs Jan 22, 2026
1dffa1c
todelete
FLchs Jan 26, 2026
4984ecd
feat(web): add nice looking custom number field
FLchs Jan 26, 2026
ec9eb47
chore(web): archive prototypes for history
FLchs Jan 28, 2026
c9c19ca
chore(web): remove prototypes
FLchs Jan 28, 2026
3d5a166
feat(web): add new date field
FLchs Jan 28, 2026
c744cea
refactor(web): improve date field
FLchs Jan 29, 2026
150cd5e
chores(web): form input unification
FLchs Jan 29, 2026
f2492fb
refactor(web): clean variable and function names
FLchs Jan 29, 2026
fa42b60
feat(web): useLocaleDateFormat hook
FLchs Jan 29, 2026
c64e06b
feat(web): add new fields to useForm hook
FLchs Jan 29, 2026
ace4668
feat(web): add each contract to openApi
FLchs Jan 29, 2026
6764273
chores(tools): add Tailwind formating to Oxfmt
FLchs Jan 29, 2026
3bac08b
feat(contracts): add documentTypes contract
FLchs Jan 29, 2026
741aa86
feat(server): add document type service and route
FLchs Jan 29, 2026
5989397
feat(validation): add document type validation
FLchs Jan 29, 2026
76a75e2
chores(project): update packages
FLchs Jan 29, 2026
2207933
feat(web): add textarea field
FLchs Feb 4, 2026
d3c65bd
refactor(web): improve file and select fields
FLchs Feb 4, 2026
d7479c4
feat(web): add name to documents
FLchs Feb 4, 2026
8da5d93
feat(web): make fields requirable
FLchs Feb 4, 2026
38bf00c
refactor(web): improve new document form
FLchs Feb 4, 2026
cfa4bca
feat(server): add document name field
FLchs Feb 4, 2026
309a6de
refactor(web): reorganize components
FLchs Feb 4, 2026
e303d21
chores(web): use # imports
FLchs Feb 4, 2026
74b4707
chore: update dependencies
FLchs Feb 4, 2026
ff919eb
fix(web/validation): fix typing and validation
FLchs Feb 4, 2026
93e4a2d
chore(web): formating
FLchs Feb 4, 2026
a823d1c
docs: record api boundary inventory
FLchs Feb 7, 2026
2d890d8
fix(validation): align date fields with wire format
FLchs Feb 7, 2026
b3676e5
fix(server): align date serialization
FLchs Feb 7, 2026
c7c6118
docs: define wire type rules
FLchs Feb 7, 2026
38b9e65
test(server): align router date payloads with wire format
FLchs Feb 7, 2026
4678ee9
docs: expand wire type guidance
FLchs Feb 7, 2026
ccf5635
test(server): align service date payloads
FLchs Feb 7, 2026
cf669af
feat(server): add OpenAPI generator entrypoint
FLchs Feb 7, 2026
593a511
chore(server): add openapi generation script
FLchs Feb 7, 2026
e266ac7
test(server): add OpenAPI spec payload helpers
FLchs Feb 7, 2026
cc12b53
test(server): validate OpenAPI routes
FLchs Feb 7, 2026
cecefff
test(server): verify OpenAPI routes match router
FLchs Feb 7, 2026
4c435eb
fix(server): align operations remove params
FLchs Feb 7, 2026
2fb4a7f
fix(server): handle optional filters in services
FLchs Feb 7, 2026
3abc289
feat(contract): add operations list contract
FLchs Feb 7, 2026
414ec6c
refactor(server): align domain layout under modules to co-locate rout…
FLchs Feb 7, 2026
25b3d74
Align operations router with contract for consistent routing.
FLchs Feb 7, 2026
5524041
refactor(server): organize openapi tooling
FLchs Feb 7, 2026
06f7766
refactor(server): align document types schema naming
FLchs Feb 7, 2026
56b16d6
Use merged contract in web OpenAPI client
FLchs Feb 7, 2026
e7ff4a0
test(server): run vehicle router tests through middleware
FLchs Feb 7, 2026
785ccda
feat(server): add name field to operations
FLchs Feb 10, 2026
fbaf3a5
fix(web): issue with validation
FLchs Feb 10, 2026
fbc548c
refactor(web): update deprecated Zod method
FLchs Feb 10, 2026
aa7fa20
fix(server): Drizzle version unification
FLchs Feb 10, 2026
ae57d46
tests(server): add operations name in tests
FLchs Feb 11, 2026
2a02c86
refactor(web): clean code
FLchs Feb 11, 2026
1023ce2
fix(web): date coercion
FLchs Feb 11, 2026
aad4789
tests(server): fix tests
FLchs Feb 11, 2026
011cf07
chores(project): commit bun lock
FLchs Feb 11, 2026
9be6228
feat(contracts): add document type creation to contracts
FLchs Feb 11, 2026
56b3f4e
feat(validation): add document type creation schema
FLchs Feb 11, 2026
6ce3801
feat(server): implement document type creation route
FLchs Feb 11, 2026
0ecd2e1
feat(web): add new Header component
FLchs Feb 11, 2026
3a8ee81
feat(web): Add sidebar submenus
FLchs Feb 11, 2026
ccd1b74
feat(web): add document types page
FLchs Feb 11, 2026
c375af5
feat(web): add Tanstack router custom type
FLchs Feb 11, 2026
fbe8bc5
feat(web): add Toasts
FLchs Feb 12, 2026
facf59a
feat(web): add placeholder to TextField
FLchs Feb 12, 2026
d3725e2
deps(web): add clsx for class concatenation
FLchs Feb 12, 2026
a1c38a3
feat(validation): add regex to documentTypes validation schema
FLchs Feb 12, 2026
6495269
feat(web): document type creation page
FLchs Feb 12, 2026
e2d471f
chores(web): formating
FLchs Feb 12, 2026
e669bb2
chores(web): basic padding (to be refined)
FLchs Feb 12, 2026
1ee34b3
test(server): remove useless tests
FLchs Feb 12, 2026
645d2ee
feat(contract): standardize delete schemas and 204 responses
FLchs Feb 13, 2026
856f48a
chores(server): more restfull delete routes
FLchs Feb 13, 2026
1935339
chore(validation): coerce numeric inputs
FLchs Feb 14, 2026
8e70951
clean out
FLchs Feb 14, 2026
8633a1b
chores: clean files
FLchs Feb 18, 2026
4e07a26
chores(web): improve validation and remove useless optimistic update
FLchs Feb 18, 2026
bc021ca
chore(web): preload more data
FLchs Feb 24, 2026
7fcd896
chore(web): eremove unused variable
FLchs Feb 25, 2026
ef76b31
feat(web): improve document preview modal
FLchs Feb 25, 2026
6eb7742
chores(web): rename files
FLchs Feb 25, 2026
6fcd816
feat(web): better sidebar nav
FLchs Feb 28, 2026
b3b3b32
refactor(web): improve naming and logic
FLchs Feb 28, 2026
fb0741b
feat(web): Main component
FLchs Feb 28, 2026
6cf010f
fix(web): Vehicle list width
FLchs Feb 28, 2026
227541a
fix(tests): remove unused directive
FLchs Feb 28, 2026
914fb1b
fix(validation): make file mandatory
FLchs Feb 28, 2026
c9c3dfc
Revert "fix(validation): make file mandatory"
FLchs Feb 28, 2026
0972129
fix(tests): fix stupid test
FLchs Feb 28, 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
2 changes: 2 additions & 0 deletions apps/server/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Uploaded files
uploads
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE `vehicle` ADD `deleted` integer DEFAULT false;
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
{
"version": "7",
"dialect": "sqlite",
"id": "0acb2ffa-98cb-489f-b34d-8cd642af5a5f",
"prevIds": [
"fe2a294b-7a2a-4824-959e-50683f28c48c"
],
"ddl": [
{
"name": "operations",
"entityType": "tables"
},
{
"name": "vehicle",
"entityType": "tables"
},
{
"type": "integer",
"notNull": false,
"autoincrement": true,
"default": null,
"generated": null,
"name": "id",
"entityType": "columns",
"table": "operations"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "date",
"entityType": "columns",
"table": "operations"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "mileage",
"entityType": "columns",
"table": "operations"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "note",
"entityType": "columns",
"table": "operations"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "type",
"entityType": "columns",
"table": "operations"
},
{
"type": "integer",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "vehicle_id",
"entityType": "columns",
"table": "operations"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "(CURRENT_TIMESTAMP)",
"generated": null,
"name": "created_at",
"entityType": "columns",
"table": "operations"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "(CURRENT_TIMESTAMP)",
"generated": null,
"name": "updated_at",
"entityType": "columns",
"table": "operations"
},
{
"type": "integer",
"notNull": false,
"autoincrement": true,
"default": null,
"generated": null,
"name": "id",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "brand",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "description",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": "false",
"generated": null,
"name": "deleted",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "engine",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": null,
"generated": null,
"name": "model",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "power",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "trim",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "year",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "(CURRENT_TIMESTAMP)",
"generated": null,
"name": "created_at",
"entityType": "columns",
"table": "vehicle"
},
{
"type": "text",
"notNull": true,
"autoincrement": false,
"default": "(CURRENT_TIMESTAMP)",
"generated": null,
"name": "updated_at",
"entityType": "columns",
"table": "vehicle"
},
{
"columns": [
"vehicle_id"
],
"tableTo": "vehicle",
"columnsTo": [
"id"
],
"onUpdate": "NO ACTION",
"onDelete": "NO ACTION",
"nameExplicit": false,
"name": "fk_operations_vehicle_id_vehicle_id_fk",
"entityType": "fks",
"table": "operations"
},
{
"columns": [
"id"
],
"nameExplicit": false,
"name": "operations_pk",
"table": "operations",
"entityType": "pks"
},
{
"columns": [
"id"
],
"nameExplicit": false,
"name": "vehicle_pk",
"table": "vehicle",
"entityType": "pks"
}
],
"renames": []
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE `operations` ADD `deleted` integer DEFAULT false;
Loading