Skip to content
Merged
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
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: CI

on:
push:
branches: ["**"]
pull_request:
branches: ["**"]

permissions:
contents: read

jobs:
backend:
name: Backend (Python)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: "pip"
cache-dependency-path: backend/requirements.txt

- name: Install dependencies
working-directory: backend
run: pip install -r requirements.txt

- name: Compile backend
working-directory: backend
run: python -m py_compile main.py mavlink_adapter.py dji_adapter.py

- name: Run tests (if present)
working-directory: backend
run: |
if [ -f pytest.ini ] || [ -d tests ]; then
pip install pytest
pytest
else
echo "No tests found, skipping."
fi

frontend:
name: Frontend (Node)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Node 20
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Cache node_modules
uses: actions/cache@v4
with:
path: skydash/frontend/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('skydash/frontend/package-lock.json', 'skydash/frontend/package.json') }}
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cache key includes 'package-lock.json', but this file does not exist in the repository. The cache key will fail to generate a hash for the missing file. Consider either generating a package-lock.json file by running 'npm install' locally and committing it, or update the cache key to only use 'package.json'. Using package-lock.json is recommended for reproducible builds.

Suggested change
key: ${{ runner.os }}-node-${{ hashFiles('skydash/frontend/package-lock.json', 'skydash/frontend/package.json') }}
key: ${{ runner.os }}-node-${{ hashFiles('skydash/frontend/package.json') }}

Copilot uses AI. Check for mistakes.
restore-keys: |
${{ runner.os }}-node-

Comment on lines +54 to +62
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The setup-node action (v4) has built-in caching support when you specify the 'cache' parameter. This manual cache action is redundant and can be removed. Instead, add 'cache: npm' to the setup-node step and specify 'cache-dependency-path: skydash/frontend/package-lock.json' (or just package.json if package-lock.json doesn't exist). This simplifies the workflow and follows GitHub Actions best practices.

Suggested change
- name: Cache node_modules
uses: actions/cache@v4
with:
path: skydash/frontend/node_modules
key: ${{ runner.os }}-node-${{ hashFiles('skydash/frontend/package-lock.json', 'skydash/frontend/package.json') }}
restore-keys: |
${{ runner.os }}-node-
cache: npm
cache-dependency-path: skydash/frontend/package-lock.json

Copilot uses AI. Check for mistakes.
- name: Install dependencies
working-directory: skydash/frontend
run: npm install

- name: Build
working-directory: skydash/frontend
run: npm run build
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A real-time drone telemetry dashboard built with FastAPI and React, featuring a "High-Voltage / Dark Mode" aesthetic with glass morphism design.

![SkyDash Dashboard](https://img.shields.io/badge/status-active-brightgreen) ![Python](https://img.shields.io/badge/python-3.12-blue) ![React](https://img.shields.io/badge/react-18.3-61dafb)
[![CI](https://github.com/mangod12/skydash/actions/workflows/ci.yml/badge.svg)](https://github.com/mangod12/skydash/actions/workflows/ci.yml) ![SkyDash Dashboard](https://img.shields.io/badge/status-active-brightgreen) ![Python](https://img.shields.io/badge/python-3.12-blue) ![React](https://img.shields.io/badge/react-18.3-61dafb)
## 📸 Dashboard Preview

<p align="center">
Expand Down