Rails v8 API and FastAPI (backend) + Next.js (frontend) implementation of the SUSHI bioinformatics system.
- Ruby 3.3.7
- Python 3.12.x
- Node.js 22.16.0
- Git
(on fgcz-r-029)
module load Dev/Ruby/3.3.7
module load Dev/node/22.16.0cd /misc/fgcz01/sushi/
git clone git@github.com:fgcz/new_SUSHI_2025
cd new_sushi_2025cd backend
# Configure Bundler for local gem installation
bundle config set --local path 'vendor/bundle'
# Install gems
bundle installcd ../frontend
# Install dependencies
npm install- Prepare Libraries on Compilation-Capable Machine:
# Clone repository
git clone git@github.com:fgcz/new_SUSHI_2025
cd new_sushi_2025
# Load required modules
module load Dev/Ruby/3.3.7
module load Dev/node/22.16.0
# Install backend dependencies
cd backend
bundle config set --local path 'vendor/bundle'
cp -r /misc/fgcz01/sushi/new_SUSHI_2025/backend/vendor .
# Run tests to verify setup
bundle exec rspec
# Install frontend dependencies
cd ../frontend
cp -r /misc/fgcz01/sushi/new_SUSHI_2025/frontend/node_modules .
# Run tests to verify setup
npm test- Database Setup (SQLite3, for development):
cd ../backend/
# Setup database
bundle exec rails db:create
bundle exec rails db:migrate
# Run API server
bundle exec rails s -b fgcz-h-083.fgcz-net.unizh.ch -p 4050- Frontend Verification:
cd frontend
# Start development server
npm run dev -- --port 4001TODO: update
- Full development environment with compilation tools
- All system libraries required for native gem compilation
- Proper SSL certificates and security configurations
cd backend
# Configure Bundler for production
bundle config set --local path 'vendor/bundle'
# Install production dependencies
bundle install
# Database setup
RAILS_ENV=production bundle exec rails db:create
RAILS_ENV=production bundle exec rails db:migrate
# Precompile assets (if needed)
RAILS_ENV=production bundle exec rails assets:precompile
# Run production server
RAILS_ENV=production bundle exec rails server -p 4000cd frontend
# Install production dependencies
npm ci --only=production
# Build application
npm run build
# Start production server
npm start# Build images
docker-compose build
# Deploy
docker-compose up -d
# Health check
docker-compose pscd backend
bundle exec rspec # Run all tests
bundle exec rspec --format doc # Verbose outputcd frontend
npm test # Interactive mode
npm run test:watch # Watch mode
npm run test:coverage # With coverage
npm run test:ci # CI modenew_sushi_2025/
├── backend/ # Rails v8 API
│ ├── app/
│ ├── config/
│ ├── spec/ # RSpec tests
│ └── vendor/bundle/ (ignored)
├── frontend/ # Next.js app
│ ├── app/
│ ├── __tests__/
│ └── node_modules/ (ignored)
└── README.md
Create these files if needed (not committed to repository):
# backend/.env
DATABASE_URL=sqlite3:db/development.sqlite3
RAILS_ENV=development# frontend/.env.local
NEXT_PUBLIC_API_URL=http://localhost:4000The backend API is documented using Swagger/OpenAPI. Once the backend server is running, you can access the interactive API documentation at:
http://localhost:4050/api-docs/index.html
Or on the deployment server:
http://fgcz-h-083.fgcz-net.unizh.ch:4050/api-docs/index.html
The API documentation provides:
- List of all available endpoints
- Request/response schemas
- Interactive testing interface
- Authentication requirements
For detailed endpoint documentation, see also:
docs/api-datasets-endpoints.mddocs/api-project-jobs-endpoint.mddocs/api-application-config-endpoint.mddocs/api-job-submission-endpoint.md
For implementation details and architecture:
docs/job-submission-implementation-plan.md- Job Submission API architecture and implementation plan
- Backend: Rails v8 API-only mode, FastAPI (later)
- Frontend: Next.js 15 with TypeScript
- Database: SQLite (development), PostgreSQL (production)
- Testing: RSpec (backend), Jest + React Testing Library (frontend)
- Styling: Tailwind CSS