mirror of
https://github.com/Hestia-Homes/insight.git
synced 2026-06-30 13:10:44 +00:00
add the first few files for insight
This commit is contained in:
commit
3ad4d78023
6 changed files with 222 additions and 0 deletions
53
.devcontainer/Dockerfile
Normal file
53
.devcontainer/Dockerfile
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
FROM library/python:3.12-bullseye
|
||||
|
||||
ARG USER=vscode
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# DO NOT PUSH IMAGE TO ECR!!! as anyone with access to image can log on to our aws
|
||||
# Will log on as aws Jun-te account, change in the future to development account
|
||||
ENV AWS_ACCESS_KEY_ID=AKIAU5A36PPNK7RXX52V
|
||||
ENV AWS_SECRET_ACCESS_KEY=KRTjzoGVestZ0ifDwaAVqiPoXXZAvQKAjY5sVBtP
|
||||
ENV AWS_DEFAULT_REGION=eu-west-2
|
||||
|
||||
# Install system dependencies in a single layer
|
||||
RUN apt update && apt install -y --no-install-recommends \
|
||||
sudo jq vim curl\
|
||||
&& apt autoremove -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Create the user and grant sudo privileges
|
||||
RUN useradd -m -s /usr/bin/bash ${USER} \
|
||||
&& echo "${USER} ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/${USER} \
|
||||
&& chmod 0440 /etc/sudoers.d/${USER}
|
||||
|
||||
# Install Poetry
|
||||
RUN pip install --no-cache-dir poetry
|
||||
|
||||
|
||||
# Install Node.js 22 (from NodeSource)
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
|
||||
&& apt install -y nodejs \
|
||||
&& node -v \
|
||||
&& npm -v
|
||||
|
||||
|
||||
# Install aws
|
||||
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||
RUN unzip awscliv2.zip
|
||||
RUN ./aws/install
|
||||
|
||||
# Install terraform
|
||||
RUN apt-get update && sudo apt-get install -y gnupg software-properties-common
|
||||
RUN wget -O- https://apt.releases.hashicorp.com/gpg | \
|
||||
gpg --dearmor | \
|
||||
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null
|
||||
RUN echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
|
||||
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
|
||||
tee /etc/apt/sources.list.d/hashicorp.list
|
||||
RUN apt update
|
||||
RUN apt-get install terraform
|
||||
RUN terraform -install-autocomplete
|
||||
|
||||
|
||||
# Set the working directory
|
||||
WORKDIR /workspaces/insight
|
||||
37
.devcontainer/devcontainer.json
Normal file
37
.devcontainer/devcontainer.json
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
"name": "Basic Python",
|
||||
"dockerComposeFile": "docker-compose.yml",
|
||||
"service": "insight",
|
||||
"remoteUser": "vscode",
|
||||
"workspaceFolder": "/workspaces/insight",
|
||||
"postStartCommand": "bash .devcontainer/post-install.sh",
|
||||
|
||||
"features": {
|
||||
// "ghcr.io/devcontainers/features/ssh-agent:1": {}
|
||||
},
|
||||
|
||||
"mounts": [
|
||||
// Optional convenience mount
|
||||
"source=${localEnv:HOME},target=/workspaces/home,type=bind"
|
||||
],
|
||||
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"settings": {
|
||||
"files.defaultWorkspace": "/workspaces/insight"
|
||||
},
|
||||
"extensions": [
|
||||
"ms-python.python",
|
||||
"ms-toolsai.jupyter",
|
||||
"mechatroner.rainbow-csv",
|
||||
"ms-toolsai.datawrangler",
|
||||
"lindacong.vscode-book-reader",
|
||||
"4ops.terraform",
|
||||
"fabiospampinato.vscode-todo-plus",
|
||||
"jgclark.vscode-todo-highlight",
|
||||
"corentinartaud.pdfpreview"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
50
.devcontainer/docker-compose.yml
Normal file
50
.devcontainer/docker-compose.yml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
insight:
|
||||
user: "${UID}:${GID}"
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: .devcontainer/Dockerfile
|
||||
command: sleep infinity
|
||||
env_file:
|
||||
- ../.db-env
|
||||
volumes:
|
||||
- ..:/workspaces/insight
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- survey-net
|
||||
|
||||
db:
|
||||
image: postgres:17.4
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- 5432:5432
|
||||
env_file:
|
||||
- ../.db-env
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
networks:
|
||||
- survey-net
|
||||
|
||||
pgadmin:
|
||||
image: dpage/pgadmin4
|
||||
hostname: pgadmin
|
||||
ports:
|
||||
- 5555:80
|
||||
env_file:
|
||||
- ../.db-env
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- db
|
||||
networks:
|
||||
- survey-net
|
||||
|
||||
networks:
|
||||
survey-net:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
|
||||
27
.devcontainer/post-install.sh
Normal file
27
.devcontainer/post-install.sh
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
poetry install;
|
||||
|
||||
# Get the Poetry virtual environment path
|
||||
VENV_PATH=$(poetry env info --path 2>/dev/null)
|
||||
|
||||
if [ -z "$VENV_PATH" ]; then
|
||||
echo "No Poetry environment found. Did you run 'poetry install'?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure VS Code settings directory exists
|
||||
SETTINGS_DIR="/home/vscode/.vscode-server/data/Machine"
|
||||
SETTINGS_FILE="$SETTINGS_DIR/settings.json"
|
||||
|
||||
mkdir -p "$SETTINGS_DIR"
|
||||
|
||||
# If settings.json doesn't exist, create a default one
|
||||
if [ ! -f "$SETTINGS_FILE" ]; then
|
||||
echo "{}" > "$SETTINGS_FILE"
|
||||
fi
|
||||
|
||||
# Update VS Code settings to use the Poetry virtual environment
|
||||
jq --arg venv "$VENV_PATH/bin/python" '.["python.defaultInterpreterPath"] = $venv' \
|
||||
"$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" && mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
|
||||
|
||||
echo "✅ Updated VS Code to use Poetry environment: $VENV_PATH"
|
||||
19
.vscode/settings.json
vendored
Normal file
19
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"jupyter.interactiveWindow.textEditor.executeSelection": true,
|
||||
"python.REPL.sendToNativeREPL": true,
|
||||
"notebook.output.scrolling": true,
|
||||
"terminal.integrated.defaultProfile.linux": "bash",
|
||||
"editor.rulers": [67],
|
||||
"terminal.integrated.profiles.linux": {
|
||||
"bash": {
|
||||
"path": "/bin/bash"
|
||||
}
|
||||
},
|
||||
|
||||
// Hot reload setting that needs to be in user settings
|
||||
// "jupyter.runStartupCommands": [
|
||||
// "%load_ext autoreload", "%autoreload 2"
|
||||
// ]
|
||||
|
||||
|
||||
}
|
||||
36
README.md
Normal file
36
README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
Initial Project spec
|
||||
|
||||
Single dashboard with:
|
||||
|
||||
[Typhaine] Weekly planned numbers
|
||||
[Typhaine] Weekly completed numbers
|
||||
[Typhaine] Ideally covers a couple of weeks
|
||||
|
||||
Note: We may not feasibly be able to do this with just HubSpot tracking and so we may require a script to complete this with the data being pushed to a database. Build a dashboard (dash?).
|
||||
|
||||
Work type, Last week [planned], Last week [completed], Next week [planned], Next week [completed]
|
||||
ECO4, 72, 48, 90, -
|
||||
WH coordination, 18, 20, 20, -
|
||||
|
||||
|
||||
|
||||
Deploy: Render?<
|
||||
|
||||
Data store:
|
||||
s3 bucket/date/all_data.json [<1mb]
|
||||
Frontend:
|
||||
boto3 to grab the data from s3 and present it back
|
||||
|
||||
Monorepo with frontend & backend
|
||||
Stack: Dash + Github actions for re-reruns + S3 for data-storage [don't set up a DB!]
|
||||
|
||||
---
|
||||
Technical Scope:
|
||||
|
||||
Junte:
|
||||
- Typhaine will need a linux machine to connect to do this
|
||||
- I've set up a temporary computer so that she can learn how to do this first
|
||||
_ Ask khalim which is better for now
|
||||
- Set up a basic devcontianer with python and poetry
|
||||
|
||||
Dash + Github Actions (etl of hubspot) + S3 ( data stroage) + devcontainer for typhaine
|
||||
Loading…
Add table
Reference in a new issue