Commit graph

291 commits

Author SHA1 Message Date
0242b2d5ff
refactor: FastAPI -> Django migration (#41)
* build(backend): set up Django 4.2 scaffolding

* feat: porting files API

feat: file ownership basics

feat: gaps in test compatibility

* test: port files API tests

* fix(tests): test database port 5432>5431 to avoid conflict with application database

* feat(auth): LoginView, middleware to handle JWT bearer tokens

* refactor: clean up old FastAPI logic, temporary utils

* refactor: resolve LoginView linting

* feat: user creation + test coverage

* test: session creation coverage

* refactor: hoist secrets, replace placeholders

* chore: clear linting errors+warns
2023-11-26 21:34:09 -05:00
a737e954aa
build(deps): refactor dependency metadata to live in pyproject.toml (#40)
* build(deps): refactor dependency metadata to live in pyproject.toml

* build(test): wait once after successful status to ensure DB is ready
2023-11-16 00:36:58 -05:00
23248d0277
feat(backend): file permissions and ownership (#38)
* feat(backend): file permissions and utilities

* feat(backend): file upload/list permissions

* refactor(backend): class-based middleware to play nicer with tests

* test(backend): async fixtures + proper foreign key cascade

* fix(backend): temporarily bypass auth
2023-08-28 05:21:49 +00:00
d31f73c66a
build(backend): start+stop+logs command cleanup (#37) 2023-08-27 15:56:29 +00:00
37d1a7e4b8
feat(backend): manage user sessions using tokens (#36)
* build(backend): pyjwt dependency

* feat(backend): middleware + logic to generate and decode tokens

* feat(backend): decorator to ensure logged in user

* fix(backend): adjust auth check decorator and jwt lifetime

* feat(backend): ensure that signature expiration is handled in middleware

* test(backend): base coverage for token generation
2023-08-27 11:33:55 -04:00
992bf1e5e1
build(backend): ensure that migrate settings set host properly (#34) 2023-08-26 05:31:22 +00:00
a7d6a6a96d
build(backend): handle test db setup healthcheck and test failures more clearly (#35)
build(backend): better healthcheck and failure handling in test script
2023-08-26 01:20:55 -04:00
24b6f8245d
refactor(backend): modularize files logic (#33)
* refactor(backend): consolidate files logic in module

* refactor(backend): move tests to match existing pattern
2023-08-20 15:54:40 +00:00
acdf1ca145
feat(backend): create user + log in implementation (#31)
* feat(backend): create user table

* build(backend): add argon2-cffi dependency

* feat(backend): basic create user / login implementation

* chore(backend): ignore needless lintrules

* refactor(backend): user api+use cases clean up and docs

* refactor(backend): reorganize into module

* test(backend): login route coverage

* refactor(backend): add request data schemas

* test(backend): refactor client call fixtures

* feat(backend): set up username uniqueness constraint

* test(backend): update coverage for username uniqueness

* chore(backend): missing dunderinit

* chore(backend): linting
2023-08-20 15:42:34 +00:00
16bb6d3afe
docs: user+password storage research documentation (#30)
* docs: user+password storage research documentation

* docs: label as research instead of arch

* docs: document rename for accuracy
2023-08-19 18:45:58 +00:00
52cef95493
build(backend): ensure that test scripting returns an error code if s… (#28)
* build(backend): ensure that test scripting returns an error code if steps fail

* build(backend): wait for database to be ready before running migrations

* build(backend): extra sleep after successful healthcheck

* fix(backend): ensure that ci environment expects same DB port as test

* build(backend): better error handling in test script

* build(backend): remove arbitrary sleep
2023-08-19 12:08:24 -04:00
62cb0955d5
fix: trigger ci run if taskfile changes + split basepath env variable… (#27)
fix: trigger ci run if taskfile changes + split basepath env variables in taskfile
2023-08-19 11:33:18 -04:00
172d70f8d5
perf: avoid redundant bootstrap runs on commands (#26) 2023-08-19 15:16:10 +00:00
a34b4e8033
perf(backend): avoid double-reading uploaded file streams (#25)
* perf(backend): avoid double-reading uploaded file content

* docs(backend): document file upload endpoint

* refactor(backend): hoist uploaded content read + simplify file write block
2023-08-19 15:05:55 +00:00
91e6004956
refactor(frontend): queries > hooks, consolidate useFileMutations (#24)
* refactor(frontend): queries > hooks, consolidate useFileMutations

* refactor(frontend): extract hook types

* refactor(frontend): extract axios, fix type imports
2023-08-18 21:07:00 -04:00
35b582394c
feat(frontend): file downloads (#23)
* feat(frontend): file downloads flow

* refactor(frontend): downloadFile to fetches hook

* test(frontend): coverage for FileList downloads

* test(frontend): downloads through FileDetails

* test(frontend): ensure that DOM clicks are mocked in jest

* docs(frontend): add details on file fetches hook
2023-08-18 19:01:24 -04:00
b77574e596
refactor(frontend): fetch to axios (#22)
* refactor: replace fetch with axios

* build(frontend): update test command to allow cli args passthrough
2023-08-18 05:24:12 +00:00
6965ce6ec4
chore: add AGPLv3 license 2023-08-17 21:20:02 -04:00
70224d0f28
feat(backend): endpoint to download files by id (#21)
* feat(backend): endpoint to download files by id

* test(backend) coverage for file downloads
2023-08-17 23:21:08 +00:00
5010da18f5
feat(frontend): add delete functionality (#19)
* feat(frontend): add delete functionality

* test(frontend): coverage for deletion buttons
2023-08-17 22:59:22 +00:00
d7f2ea51c8
chore: add logo to README (#20) 2023-08-16 13:49:24 -04:00
090232f527
build: use python:x-slim base (#18) 2023-08-16 00:32:26 -04:00
1554e23e7f
build(backend): run as a container (#17)
* docs: document running as a container

* build: functional dockerfile

* build: task command tweaks to accommodate docker app

* ci(backend): optionally build dev docker image
2023-08-15 23:57:09 -04:00
fdc402f76a
feat(backend): file deletion flow (#16)
* feat(backend): file deletion flow

* ci: set change-check flags when no changes detected

* feat(backend): refactor settings to be a singleton object

* refactor(backend): cleaning delete flow cruft

* test(backend): add coverage for deletion + adapt coverage to only rely on endpoints

* docs: type responses for deletions
2023-08-14 08:26:05 -04:00
7fa2aff9f9
ci: sentinel step for env pipeline success (#15)
* ci(frontend): sentinel step

* ci(backend): sentinel step

* ci(frontend): success to depend on build success
2023-08-12 17:20:22 -04:00
fbba07cbdc
build: tooling clean-up (#14)
* build(backend): requirements-locks to use venv directly to avoid needing to activate

* build(backend): taskfile cleaning, no more sourcing

* build(frontend): remove unneeded syntax, cmds>cmd for one-liners

* docs: instructors on local setup

* ci: hoisted default working directory settings
2023-08-12 16:32:07 -04:00
da2bf786d5
feat(backend): handle settings by environment (#13)
* build(backend): db provisioning tooling

* feat(backend): split application configuration by env

* docs(backend): update mention of local db setup
2023-08-12 15:56:52 -04:00
ee9a9d8dc3
test(backend): list+details tests (#12)
* build(backend): more verbosity on test + error handling

* fix(backend): raise HTTPException, not return on details fetch

* fix(backend): get inserted ID instead of row tuple

* test(backend): add tests for list + details routes
2023-08-12 13:24:25 -04:00
712de0ca1d
ci: control go-task version at top-level (#11)
* ci(backend): control go-task version at top-level

* ci(frontend): use go-task in CI instead of direct yarn calls
2023-08-12 12:33:12 -04:00
5b600f0cb7
perf(backend): cache .venv path correctly (#10)
* perf(backend): cache .venv path correctly

* perf(frontend): cache .yarn and .parcel-cache path correctly
2023-08-12 11:59:03 -04:00
a341b462c7
build(backend): add db-aware testing tooling (#9)
* fix(backend): centralized settings, fix refs

* build(backend): pytest configuration points at the right path

* build(backend): test tooling script

* ci(backend): use taskfile to trigger tests in ci

* test(backend): stub db-test

* ci(backend): use Task for backend steps, remove redundant bootstrap
2023-08-12 11:45:51 -04:00
d3cc915039
build(backend): test tooling setup + taskfile tidy (#7)
* build(backend): test tooling setup + taskfile tidy

* test(backend): add stub test

* ci: run backend tests
2023-08-11 13:58:22 -04:00
2003c1df35
ci: consolidate preflight check (#6) 2023-08-11 05:41:52 +00:00
699007bae9
ci: split fe+be pipelines (#5) 2023-08-11 01:31:38 -04:00
cc59ffcc2e feat(frontend): basic upload file + display in list flow 2023-08-11 00:48:57 -04:00
24d31f2d9c build: split taskfiles into be+fe concerns 2023-08-11 00:48:57 -04:00
002b6cdc68
feat(frontend): files API stub instead of hardcoded mocks (#3)
* build(frontend): node version management

* feat: use files API via network instead of hardcoded mock

* fix: mock in tests
2023-08-09 00:52:26 -04:00
c541877cf7
ci: preflight checks on main 2023-08-09 00:16:37 -04:00
bf7431f747
feat(backend): sub fetch endpoints (#2)
* feat(backend): sub fetch endpoints

* ci: skip frontend/backend if no frontend change

* ci: backend formatting

* build: tooling and commands

* build: psycopg2

* build: dependency locking tooling

* build: pylint

* feat: migration handling

* feat: rudimentary upload flow

* feat: basic file create/read interactions

* docs: stubs

* build: migration command
2023-08-08 23:49:54 -04:00
25ae69f6f4
feat(frontend): initial mock app + tooling + CI (#1)
* feat(frontend): filelist, filedetails, routing

* ci: enable lint/test/build, preview stub

* ci: linting file filter
2023-08-05 12:46:28 -04:00
Marc Cataford
acb4005fbe
Initial commit 2023-08-05 12:06:32 -04:00