https://github.com/junho100/tmr-backend
A Go-based backend service for TMR (Targeted Memory Reactivation) lab experiment management.
https://github.com/junho100/tmr-backend
Last synced: 5 months ago
JSON representation
A Go-based backend service for TMR (Targeted Memory Reactivation) lab experiment management.
- Host: GitHub
- URL: https://github.com/junho100/tmr-backend
- Owner: junho100
- Created: 2024-11-03T14:23:03.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-16T13:24:58.000Z (11 months ago)
- Last Synced: 2025-02-16T14:40:38.814Z (11 months ago)
- Language: Go
- Homepage:
- Size: 54.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TMR Backend
A Go-based backend service for TMR (Targeted Memory Reactivation) lab experiment management.
## Overview
This project provides a REST API service for managing TMR lab experiments, including subject management, lab test administration, and result tracking. It's built with Go and uses MySQL as the database.
## Tech Stack
- **Language**: Go 1.22.1
- **Framework**: Gin Web Framework
- **Database**: MySQL with GORM
- **Container**: Docker
- **CI/CD**: GitHub Actions
- **Cloud Services**: AWS (ECR, CodeDeploy, S3, EC2)
## Key Features
### 1. Subject Management
- Create new test subjects
- Verify subject existence
- Generate unique login IDs for subjects
### 2. Lab Test Management
- Support for pre-tests and post-tests
- Track breathing patterns during tests
- Record cue word presentations
- Store test results and histories
### 3. File Management
- Temporary file storage for test results
- Automatic file cleanup after expiration (60 minutes)
- Secure file download functionality
### 4. Slack Integration
- Automated notifications for test events
- Test result summaries with downloadable CSV files
- Real-time updates on experiment progress
## Project Structure
- config/: Configuration setup (DB, env)
- dto/: Data Transfer Objects
- entity/: Database entities
- handler/: HTTP request handlers
- model/: Business logic and database operations
- router/: Route definitions
- util/: Utility functions
- main.go: Application entry point
## API Endpoints
### Subject APIs
- POST /api/subjects - Create new subject
- GET /api/subjects/check - Check subject existence
### Lab APIs
- POST /api/labs/breathing - Record breathing history
- POST /api/labs/cue - Record cue presentation
- POST /api/labs/start-test - Start a new test session
- POST /api/labs/test - Record test history
- GET /api/labs/cue - Get target words
### File APIs
- GET /api/files/:filename - Download result files
### Health Check
- GET /api/health - Service health check
## Deployment
The project uses GitHub Actions for CI/CD pipeline:
1. Builds Docker image
2. Pushes to Amazon ECR
3. Deploys to EC2 using AWS CodeDeploy
### Prerequisites
- AWS credentials
- MySQL database
- Slack webhook URL
- Environment variables setup
### Environment Variables
- DB_HOST
- DB_USERNAME
- DB_PASSWORD
- DB_NAME
- SLACK_WEBHOOK_URL
- BASE_URL
## Development Setup
1. Clone the repository
2. Install dependencies: go mod download
3. Set up environment variables: Copy .env.example to .env and configure
4. Run the application: go run main.go
## Docker Support
Build the image:
docker build -t tmr-backend .
Run the container:
docker run -p 8080:8080 -v /path/to/temp_files:/temp_files tmr-backend