Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
2aa0183
refactor(monorepo): 🧹 move API into api/
alexchristy Jul 13, 2025
4b364c9
refactor(monorepo): move cli over
Adamkadaban Jul 13, 2025
79ec998
refactor(monorepo): move frontend over
Adamkadaban Jul 13, 2025
8a8d3c3
refactor(monorepo): move cli gitignore over
Adamkadaban Jul 13, 2025
ae259cc
refactor(monorepo): scope workflows to appropriate folders
Adamkadaban Jul 13, 2025
a8e9db7
refactor(monorepo): move docs over
Adamkadaban Jul 13, 2025
0ca5517
fix(monorepo): add missing goreleaser file
Adamkadaban Jul 13, 2025
ab75f50
fix(monorepo): get version from project root
Adamkadaban Jul 13, 2025
2cbbad4
style(monorepo): black fixes
Adamkadaban Jul 13, 2025
ec33106
fix(monorepo): move api docker compose files to api directory for now…
Adamkadaban Jul 13, 2025
6241ddf
fix(monorepo): reformat docker compose files to support frontend and …
Adamkadaban Jul 13, 2025
cd5a8cc
fix(monorepo): fix versioning in api to work regardless of src root
Adamkadaban Jul 13, 2025
6822e1d
fix api dockerfile paths
Adamkadaban Jul 14, 2025
9d10e53
configure docker compose with cors
Adamkadaban Jul 14, 2025
c551954
add cors to api setup
Adamkadaban Jul 14, 2025
f5bc20d
add cors to api setup
Adamkadaban Jul 14, 2025
831ef72
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
4dd5d91
fix(monorepo): add vite url to frontend dockerfile
Adamkadaban Jul 14, 2025
b6851cb
fix(monorepo): add noqa for inline import that was accidentally removed
Adamkadaban Jul 14, 2025
1e21ae3
docs: switch url for repo from API to OpenLabs
Adamkadaban Jul 14, 2025
0eb68c0
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
4e4e8cc
style(monorepo): put ruff noqa for inline imports back into conftest
Adamkadaban Jul 14, 2025
f7e5b08
ci(monorepo): remove erroneous job in cli lint workflow
Adamkadaban Jul 14, 2025
a6b87ec
docs(monorepo): include checks for cli and frontend in pr template
Adamkadaban Jul 14, 2025
9804bda
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
b13da32
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
55b45fb
fix(monorepo): fix path for docker compose files in api conftest
Adamkadaban Jul 14, 2025
4c04f7f
style(monorepo): black fixes
Adamkadaban Jul 14, 2025
e34b95c
fix(monorepo): fix docker compose files to get integration tests work…
Adamkadaban Jul 14, 2025
7202ad8
fix(api,config): update api default config values for postgress and r…
alexchristy Jul 14, 2025
63d48dc
fix(env): move env example files to project root
alexchristy Jul 14, 2025
45603a5
fix(docker): move docker config file to project root
alexchristy Jul 14, 2025
4afc589
fix(docker, api): update docker and api config variables and point do…
alexchristy Jul 14, 2025
374214a
fix(docker): make frontend wait until API is healthy to prevent eager…
alexchristy Jul 14, 2025
72aced2
fix(api): revert allowed default origins to localhost
alexchristy Jul 14, 2025
0c4d92b
fix(frontend): update runtime config to fall back to port 8000 for th…
alexchristy Jul 14, 2025
9d58271
fix(git): update .gitignore to include project root env files
alexchristy Jul 14, 2025
afeca8f
fix(tests): dynamically determine the path project root
alexchristy Jul 14, 2025
291aa1b
fix(tests): remove integration test coverage to speed up test time
alexchristy Jul 14, 2025
2a7d18f
fix(tests): update integration tests credential loading
alexchristy Jul 14, 2025
57e8e36
fix(workflows): change api test workflows to create .env file in proj…
alexchristy Jul 14, 2025
67fb692
fix(workflows): change deploy test workflow to create .env file in pr…
alexchristy Jul 14, 2025
611872f
Create central README.md
alexchristy Jul 15, 2025
54d2bd9
fix(docs): update API readme
alexchristy Jul 15, 2025
5ba4ef0
feat(docs): catch up docs wip commit
alexchristy Jul 16, 2025
946f7d5
fix(docs): wip documentation need to create diagram for Lab Hierarchy
alexchristy Jul 16, 2025
ca82b64
feat(docs): add core concepts page and supporting assets
alexchristy Jul 17, 2025
c5df157
feat(docs): add index content
alexchristy Jul 17, 2025
cd881d3
fix(docs): rename the first lab quick start tutorial
alexchristy Jul 17, 2025
afc7450
fix(docs): finish the deploy your first range tutorial
alexchristy Jul 17, 2025
e572991
fix(docs): update core components explanation page to indicate that J…
alexchristy Jul 17, 2025
05d1411
fix(docs): add emoji to introduction doc index entry
alexchristy Jul 17, 2025
a6ec2fa
fix(docs): add cli tutorial placeholder
alexchristy Jul 17, 2025
89bf19c
feat(docs): add architectural diagram
alexchristy Jul 17, 2025
3050ce4
fix(api,config): update default license values for api
alexchristy Jul 17, 2025
857f281
fix(docs): update installation docs and env examples to make it easy …
alexchristy Jul 17, 2025
8a2b83f
fix(docs): reformat main README to point to new installation guide on…
alexchristy Jul 17, 2025
62f194b
fix(docs): remove auto release workflows from api readme
alexchristy Jul 17, 2025
20cbf3a
fix(docs): add frontend port to env example
alexchristy Jul 17, 2025
0e70b6b
test(ssh): add integration test to check that ssh from jumpbox to hos…
Adamkadaban Jul 18, 2025
bf3e95f
fix(typing): add better type hinting so mypy passes
Adamkadaban Jul 18, 2025
77ee005
fix(enums): make os username enums seperate per provider
Adamkadaban Jul 18, 2025
edbe779
fix(workflows): update auto workflow config to point to new repo name
alexchristy Jul 18, 2025
14989fa
fix(git): add new paths for test files and outputs
alexchristy Jul 18, 2025
7a7b29a
fix(docker): update the api dockerfile terraform install into a singl…
alexchristy Jul 18, 2025
da0c9c2
fix(workflow): api aws tests add pip caching and artifact uploads on …
alexchristy Jul 18, 2025
7bde2ef
fix(workflow): api black add pip caching
alexchristy Jul 18, 2025
11220f4
fix(workflows): api mypy add pip caching
alexchristy Jul 18, 2025
3c8de75
fix(workflow): api ruff add pip caching
alexchristy Jul 18, 2025
16a9317
fix(workflow): api unit tests add pip caching and artifact uploads on…
alexchristy Jul 18, 2025
bc3b7c5
fix(workflows): api integration tests add pip caching and aritifact u…
alexchristy Jul 18, 2025
859a403
fix(docker): remove unnecessary env file passing and default values i…
alexchristy Jul 18, 2025
7b24210
feat(docker): add a docker-compose test override to prevent overwriti…
alexchristy Jul 18, 2025
b712965
fix(tests,api): update api pyproject.toml to save test articacts in t…
alexchristy Jul 18, 2025
21b6437
fix(frontend): remove runtime configuration of api url to ensure that…
alexchristy Jul 18, 2025
63bb176
fix(env): update env file to centralize value setting and dyanmically…
alexchristy Jul 18, 2025
6d9ee82
fix(api): refactor api config to remove redundant starlette env parsi…
alexchristy Jul 18, 2025
a549638
fix(api): update api conftest to use new testing-out directory and dy…
alexchristy Jul 18, 2025
957a511
feat(e2e): add new end to end tests
alexchristy Jul 18, 2025
d28404c
fix(tests): fix yield type in test env file creation for api integrat…
alexchristy Jul 18, 2025
a498fbf
Merge branch 'monorepo' into ssh-tests
Adamkadaban Jul 18, 2025
f7ab730
fix(workflows): move all api tests into single workflow file and corr…
alexchristy Jul 18, 2025
08d383d
fix(workflows): update end to end tests workflow to be scoped to rele…
alexchristy Jul 18, 2025
76a46e8
fix(workflows): combine all api lint workflow files into a single wor…
alexchristy Jul 18, 2025
50eb0f7
fix(workflows): make e2e test workflow read only
alexchristy Jul 18, 2025
fd895fc
fix(workflow): update e2e test workflow playwright commands
alexchristy Jul 18, 2025
b293dd1
fix(workflows): update e2e test workflow playwright commands to remov…
alexchristy Jul 18, 2025
8b65d17
fix(workflows): remove pytest args breaking e2e workflow tests
alexchristy Jul 18, 2025
906cf51
fix(workflows): update API tests AWS test to point to correct reusabl…
alexchristy Jul 18, 2025
dc541bd
fix(workflows): add concurrency checks for API and end2end tests to s…
alexchristy Jul 18, 2025
46072ee
fix(docs): update README badges
alexchristy Jul 18, 2025
117ceb3
Merge pull request #117 from OpenLabsHQ/ssh-tests
Adamkadaban Jul 18, 2025
54a9a8f
fix(workflows): add codecov to API unit tests
alexchristy Jul 19, 2025
c2d840c
feat(codecov): add code coverage configuration
alexchristy Jul 19, 2025
ff7d0f4
fix(api): update api pyproject.toml to remove redundant coverage thre…
alexchristy Jul 19, 2025
98084f5
fix(tests): update api test to use the correct invalid payload
alexchristy Jul 19, 2025
e36bedd
fix(workflows): switch api unit test coverage to coveralls
alexchristy Jul 19, 2025
aacd5b5
Merge branch 'main' into monorepo
Adamkadaban Jul 19, 2025
9b88e59
fix(docs): add coverage badge to readme
alexchristy Jul 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .autorc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"git-tag"
],
"owner": "OpenLabsHQ",
"repo": "API",
"repo": "OpenLabs",
"name": "Alex Christy",
"email": "a.christy@ufl.edu"
}
78 changes: 57 additions & 21 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,29 +1,65 @@
# API Configuration
API_IP_ADDR=127.0.0.1
API_PORT=8000
##############################################
# #
# OpenLabs Security Settings #
# #
# THESE MUST BE CHANGED FOR SECURE USE! #
# #
##############################################

# --- Admin User ---
ADMIN_EMAIL=admin@test.com
ADMIN_PASSWORD="admin123" # <--- CHANGE THIS!
ADMIN_NAME=Administrator


# PostgreSQL Configuration
# --- Database Auth ---
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_PASSWORD="ChangeMe123!" # <--- CHANGE THIS!


# --- OpenLabs Auth ---
SECRET_KEY="ChangeMe123!" # <--- GENERATE A LONG, RANDOM STRING!


# --- Redis Queue Auth ---
REDIS_QUEUE_PASSWORD="ChangeMe123!" # <--- CHANGE THIS!


##############################################
# #
# OpenLabs Application Settings #
# #
# Defaults usually work for local setups. #
# Adjust only for specific environments. #
# #
##############################################

# localhost if launching without Docker
# --- Frontend Settings ---
FRONTEND_HOST=localhost
FRONTEND_PORT=3000
FRONTEND_URL="http://${FRONTEND_HOST}:${FRONTEND_PORT}"


# --- API Settings ---
API_BIND_ADDR=127.0.0.1
API_PORT=8000
API_HOST=localhost
API_URL="http://${API_HOST}:${API_PORT}"


# --- CORS Settings ---
CORS_ORIGINS="${FRONTEND_URL}"
CORS_CREDENTIALS=True
CORS_METHODS="*"
CORS_HEADERS="*"


# --- Database Settings ---
POSTGRES_SERVER=postgres
POSTGRES_PORT=5432
POSTGRES_DB=openlabs

# Expose PostgreSQL on host port for debugging
POSTGRES_DEBUG_PORT=5432

# Admin User Configuration (optional)
# Admin user is automatically created when database is initialized
ADMIN_EMAIL=admin@test.com
ADMIN_PASSWORD=admin123
ADMIN_NAME=Administrator

# Authentication Configuration
SECRET_KEY=your-secret-key-here

# Redis queue
REDIS_QUEUE_HOST="redis"
REDIS_QUEUE_PORT=6379
REDIS_QUEUE_PASSWORD="your-redis-queue-password-here"
# --- Redis Queue Settings ---
REDIS_QUEUE_HOST=redis
REDIS_QUEUE_PORT=6379
11 changes: 10 additions & 1 deletion .env.tests.example
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
# AWS Deploy Test Credentials
##############################################
# #
# OpenLabs Test Credentials #
# #
# Must be configured to run provider #
# specific tests! #
# #
##############################################

# --- AWS ---
INTEGRATION_TEST_AWS_ACCESS_KEY=
INTEGRATION_TEST_AWS_SECRET_KEY=
4 changes: 3 additions & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
- [ ] I have tested my changes locally and verified they work as expected.
- [ ] I have added relevant tests to cover my changes.
- [ ] I have made any necessary updates to the documentation.
- [ ] I have made any necessary updates to the CLI.
- [ ] I have made any necessary updates to the frontend.

## Description

Provide a brief description of the changes made in this PR, including any related issues. Be sure to mention the purpose of the changes and how they address the issue.

Fixes: #<issue_number> (if applicable)
Fixes: #<issue_number> (if applicable)
66 changes: 66 additions & 0 deletions .github/goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# test this file with
# goreleaser release --config goreleaser.yml --clean --snapshot
version: 2
builds:
- env:
- CGO_ENABLED=0
- GOVERSION=1.19
ldflags:
- -s -w -X github.com/OpenLabsHQ/CLI/cmd.version={{.Version}} -X github.com/OpenLabsHQ/CLI/cmd.buildTime={{.Date}}
flags:
- -trimpath
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
binary: openlabs

nfpms:
- maintainer: "https://github.com/OpenLabsHQ"
package_name: openlabs
formats:
- deb
- rpm
- apk

archives:
- format: tar.gz
name_template: >-
openlabs_
{{- .Version }}_
{{- .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}
format_overrides:
- goos: windows
format: zip
files:
- README.md
- LICENSE*
- CHANGELOG.md

checksum:
name_template: 'checksums.txt'

snapshot:
name_template: "{{ incpatch .Version }}"

release:
draft: false
prerelease: auto

changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
- "^chore:"
- "Merge pull request"
- "Merge branch"
117 changes: 117 additions & 0 deletions .github/workflows/api_lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: API Lint

on:
push:
branches:
- main
paths:
- 'api/**'
pull_request:
branches:
- '**'
paths:
- 'api/**'

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true

jobs:
black:
runs-on: ubuntu-latest

steps:
# Checkout the code
- name: Checkout code
uses: actions/checkout@v4

# Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ vars.PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: |
api/requirements.txt
api/dev-requirements.txt
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
# Run Black formatter
- name: Run Black
run: |
cd api
black --check --diff .
mypy:
runs-on: ubuntu-latest

steps:
# Checkout the code
- name: Checkout code
uses: actions/checkout@v4

# Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ vars.PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: |
api/requirements.txt
api/dev-requirements.txt
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
# Run MyPy checks
- name: Run MyPy
run: |
cd api
mypy --install-types --non-interactive .
ruff:
runs-on: ubuntu-latest

steps:
# Checkout the code
- name: Checkout code
uses: actions/checkout@v4

# Set up Python
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ vars.PYTHON_VERSION }}
cache: 'pip'
cache-dependency-path: |
api/requirements.txt
api/dev-requirements.txt
# Install dependencies
- name: Install dependencies
run: |
cd api
pip install --upgrade pip
pip install -r requirements.txt
pip install -r dev-requirements.txt
# Run Ruff linter and formatter
- name: Run Ruff
run: |
cd api
ruff check .
Loading
Loading