- Docker Desktop installed and running
1. Config files (not in repo — gitignored)
Create .env in the project root (copy from .env.example):
cp .env.example .envAWS credentials are optional for local testing (queue/S3 features won't work but GEO loading and CEL uploads will).
2. Data directory
Create data/, tmp/, log/ directories in the project root (gitignored):
mkdir -p data tmp logThe data/ directory holds GMT reference files. For local testing, this can be empty — it's only needed for the contrast/pathway analysis steps.
3. Build and run both containers
docker compose build
docker compose upThis starts the backend (port 9220) and the Next.js frontend (port 3000).
Verify the backend is running:
curl http://localhost:9220/api/ping
# Should return: trueFrontend available at http://localhost:3000
You can also build/run them individually:
docker compose build backend
docker compose up backend # backend only4. Dev mode (optional — hot reload for frontend development)
If you're actively developing the frontend and want hot reload instead of the container:
cd client
npm install
echo "NEXT_PUBLIC_API_URL=http://localhost:9220/api/analysis" > .env.local
npm run devThis runs the Next.js dev server at http://localhost:3000 against the containerized backend. Stop the frontend container first if it's running to free port 3000.
- Go to
http://localhost:3000/analysis - Enter a GEO accession code (e.g.
GSE781) and click Load - A spinner shows while R processes the data
- GSM Data table should populate with sample metadata
- CEL file upload: switch to "CEL Files" mode, select
.CELfiles, click Load
| Component | Version | Note |
|---|---|---|
| R | v3.4.4 | Download on official website: https://www.r-project.org/ |
| devtools | latest | R -e "install.packages('devtools', repo='http://cran.r-project.org')" |
| Node.js (with npm) | v.8.11.3 or latest | |
| forever | latest | npm install forever -g |
| xvfb | latest | X virtual framebuffer is a display server implementing the X11 display server protocol (for microarray plots). |
Server: To install server dependencies, navigate to the root of the project and execute:
$ npm install
Client: To install client dependencies, navigate to the /client folder and run the same command
Forever Module: Install the forever module globally:
$ npm install forever -g
All required R dependencies are defined in setup.R.
To install the R dependencies, navigate to /setup/setup.R and execute:
$ Rscript setup.R
Navigate to /config/index.js and update the setting variable path to microarray_setting-local.json, which is also found in the same folder.
Modify server settings in microarray_setting-local.json if needed.
From the project root, navigate one directory up to the /data folder. Create folder if it doesn't exist.
Place files from https://github.com/CCBR/MicroArrayPipeline/tree/master/mpstr_configuration_files into the /data folder.
To start server, navigate to root of project and execute:
$ node index.js
To start the client, navigate to the /client folder and execute:
$ npm start