Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.git
.github
.Rproj.user
.Rhistory
.RData
.Ruserdata
*.Rcheck
*.tar.gz
docs/superpowers
36 changes: 36 additions & 0 deletions .github/workflows/test-fast.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: test-fast

on:
push:
branches: [main, master, develop]
pull_request:
branches: [main, master, develop]

permissions:
contents: read

jobs:
test-fast:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: r-lib/actions/setup-r@6f6e5bc62fba3a704f74e7ad7ef7676c5c6a2590 # v2
with:
use-public-rspm: true

- uses: r-lib/actions/setup-r-dependencies@6f6e5bc62fba3a704f74e7ad7ef7676c5c6a2590 # v2
with:
extra-packages: any::testthat
needs: check

- name: Run fast productization tests
run: |
Rscript - <<'RSCRIPT'
reporter <- testthat::StopReporter$new()
testthat::test_file("tests/testthat/test-benchmark-manifest.R",
reporter = reporter)
testthat::test_file("tests/testthat/test-shiny-product-surface.R",
reporter = reporter)
RSCRIPT
Comment on lines +23 to +36
17 changes: 17 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,23 @@ It provides:
- optional remote worker initialization (`aefaInit`),
- an interactive Shiny UI (`launchAEFA`).

## Productization Boundaries

The repository remains a monorepo until the product surface has independent
release or deployment needs. Use these boundaries when planning sale-readiness
work:

- `kaefa-core`: the R/statistical engine boundary around `aefa()`,
`engineAEFA()`, model selection, item-fit evaluation, theta-prior utilities,
and benchmark evidence.
- `kaefa-studio`: the buyer-facing UI boundary around `launchAEFA()` and
`inst/shiny-app/app.R`.
- `kaefa-runner`: the future deployment and execution boundary for container,
hosted, remote, or scheduled analysis workflows.

Do not introduce a git submodule unless a downstream buyer or deployment model
explicitly requires vendored source integration.

## Repository Layout

- `R/kaefa.R`: public orchestration entry points and exported runtime behavior.
Expand Down
1 change: 1 addition & 0 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ LazyData: true
Repository: CRAN
Suggests: covr,
testthat,
pkgload,
knitr,
rmarkdown
VignetteBuilder: knitr
Expand Down
26 changes: 26 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
FROM r-base:4.4.2

ENV R_REPOS=https://cloud.r-project.org

WORKDIR /opt/kaefa

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
cmake \
libcurl4-openssl-dev \
libssl-dev \
libxml2-dev \
libuv1-dev \
pandoc \
xz-utils \
&& rm -rf /var/lib/apt/lists/*

RUN Rscript -e 'install.packages(c("future", "mirt", "psych", "plyr", "listenv", "NCmisc", "progress", "shiny", "DT", "fitdistrplus"), repos = Sys.getenv("R_REPOS"))'

COPY . /opt/kaefa

RUN R CMD INSTALL .

EXPOSE 3838

CMD ["Rscript", "-e", "kaefa::launchAEFA(host = '0.0.0.0', port = 3838)"]
Loading
Loading