Skip to content

Commit 1636ec5

Browse files
authored
Merge pull request #7 from arcursino/main
feat: setup project infrastructure, linters, base ui, and ci workflow
2 parents ccb120e + c656c96 commit 1636ec5

5 files changed

Lines changed: 157 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Code Quality & CI
2+
3+
on:
4+
push:
5+
branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
jobs:
10+
lint:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout repository code
15+
uses: actions/checkout@v4
16+
17+
- name: Set up Python 3.11
18+
uses: actions/setup-python@v5
19+
with:
20+
python-version: '3.11'
21+
cache: 'pip'
22+
23+
- name: Install dependencies
24+
run: |
25+
python -m pip install --upgrade pip
26+
pip install -r requirements.txt
27+
28+
- name: Run Black Code Formatter Check
29+
run: black --check src/
30+
31+
- name: Run Flake8 Linter Check
32+
run: flake8 src/

.gitignore

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Byte-compiled / optimized / DLL files
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
6+
# Environments
7+
.venv/
8+
venv/
9+
ENV/
10+
env/
11+
12+
# Streamlit logs and dynamic caching
13+
.streamlit/
14+
.streamlit/config.toml
15+
16+
# Linter profiles and caches
17+
.black
18+
.flake8
19+
.pytest_cache/
20+
.mypy_cache/

pyproject.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[tool.black]
2+
line-length = 88
3+
target-version = ['py311']
4+
include = '\.pyi?$'
5+
exclude = '''
6+
/(
7+
\.git
8+
| __pycache__
9+
| \.venv
10+
| build
11+
| dist
12+
)/
13+
'''

requirements.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
streamlit>=1.35.0
2+
pandas>=2.0.0
3+
plotly>=5.15.0
4+
requests>=2.31.0
5+
Pillow>=10.0.0
6+
7+
# Code Quality & Linters
8+
black>=23.0.0
9+
flake8>=6.0.0

src/app.py

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
import streamlit as st
2+
3+
# Initial page configuration
4+
st.set_page_config(
5+
page_title="ScanAPI Community Dashboard",
6+
page_icon="🚀",
7+
layout="wide",
8+
initial_sidebar_state="expanded",
9+
)
10+
11+
# Main Dashboard Title
12+
st.title("🚀 ScanAPI Community Dashboard")
13+
st.markdown(
14+
"Welcome to the community health and velocity dashboard. "
15+
"This tool monitors ecosystem contributions, project metrics, "
16+
"and generates social assets."
17+
)
18+
19+
st.divider()
20+
21+
# Navigation Tabs Creation (Mapping the next project features)
22+
tab_onboarding, tab_leaderboard, tab_trends, tab_marketing = st.tabs(
23+
[
24+
"📥 Contributor Onboarding",
25+
"🏆 Wall of Fame & Leaderboard",
26+
"📈 Issue Trend Analytics",
27+
"📱 Social Media Assets",
28+
]
29+
)
30+
31+
# TAB CONTENT (Initial boilerplates)
32+
33+
with tab_onboarding:
34+
st.header("Contributor Onboarding Hub")
35+
st.subheader("Lowering the barrier to entry")
36+
st.info(
37+
"Feature incoming: Dynamic aggregation of "
38+
"'good first issue' and 'help wanted' labels."
39+
)
40+
41+
# Visual example of metric cards (TTFR and TTM)
42+
col1, col2 = st.columns(2)
43+
with col1:
44+
st.metric(
45+
label="Avg Time-to-First-Response (TTFR)",
46+
value="⏳ Loading...",
47+
delta="Target: < 24h",
48+
)
49+
with col2:
50+
st.metric(
51+
label="Avg Time-to-Merge (TTM)",
52+
value="⏳ Loading...",
53+
delta="Target: < 48h",
54+
)
55+
56+
with tab_leaderboard:
57+
st.header("Community Wall of Fame")
58+
st.subheader("Celebrating our active contributors")
59+
st.info(
60+
"Feature incoming: Interactive leaderboard ranking "
61+
"active contributors and PR authors."
62+
)
63+
64+
with tab_trends:
65+
st.header("Advanced Issue Trend Analysis")
66+
st.subheader("Project resolution velocity over time")
67+
st.info(
68+
"Feature incoming: Interactive time-series charts "
69+
"tracking issue activity grouped by labels."
70+
)
71+
72+
with tab_marketing:
73+
st.header("Social Media Helper & Automation")
74+
st.subheader("Empowering community advocates")
75+
st.info(
76+
"Feature incoming: Automated text templates and dynamic "
77+
"'Contributor of the Week' image generators."
78+
)
79+
80+
# Minimalist Sidebar Footer
81+
st.sidebar.markdown("---")
82+
st.sidebar.markdown("💡 **ScanAPI Ecosystem**")
83+
st.sidebar.markdown("[Main Repository](https://github.com/scanapi/scanapi)")

0 commit comments

Comments
 (0)