Skip to content
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 21 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
// Name this configuration
"name": "Codespace for Skills!",
// Use the base codespace image
"image": "mcr.microsoft.com/vscode/devcontainers/universal:latest",
"remoteUser": "codespace",
"overrideCommand": false,
"customisations": {
"vscode": {
"extensions": [
"GitHub.copilot"
]
},
"codespaces": {
"openFiles": [
"codespace.md"
]
}
},
"postCreateCommand": "echo '# Writing code upon codespace creation!'
}
21 changes: 21 additions & 0 deletions app/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os

db = SQLAlchemy()
migrate = Migrate()

def create_app():
app = Flask(__name__)
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'dev-secret-key')
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DATABASE_URL', 'sqlite:///octofit.db')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db.init_app(app)
migrate.init_app(app, db)

from . import routes
app.register_blueprint(routes.bp)

return app
17 changes: 17 additions & 0 deletions app/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from . import db
from datetime import datetime

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
workouts = db.relationship('Workout', backref='user', lazy=True)

class Workout(db.Model):
id = db.Column(db.Integer, primary_key=True)
date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
exercise = db.Column(db.String(100), nullable=False)
sets = db.Column(db.Integer, nullable=False)
reps = db.Column(db.Integer, nullable=False)
weight = db.Column(db.Float, nullable=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
25 changes: 25 additions & 0 deletions app/routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from flask import Blueprint, render_template, request, redirect, url_for
from . import db
from .models import User, Workout

bp = Blueprint('main', __name__)

@bp.route('/')
def index():
workouts = Workout.query.all()
return render_template('index.html', workouts=workouts)

@bp.route('/add_workout', methods=['GET', 'POST'])
def add_workout():
if request.method == 'POST':
exercise = request.form['exercise']
sets = int(request.form['sets'])
reps = int(request.form['reps'])
weight = float(request.form['weight']) if request.form['weight'] else None
user_id = 1 # For simplicity, assume user 1

workout = Workout(exercise=exercise, sets=sets, reps=reps, weight=weight, user_id=user_id)
db.session.add(workout)
db.session.commit()
return redirect(url_for('main.index'))
return render_template('add_workout.html')
47 changes: 47 additions & 0 deletions app/static/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f4f4;
}

header {
background-color: #333;
color: white;
text-align: center;
padding: 1rem;
}

main {
max-width: 800px;
margin: 2rem auto;
padding: 1rem;
background: white;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}

form {
display: flex;
flex-direction: column;
}

label {
margin-top: 1rem;
}

input, button {
padding: 0.5rem;
margin-top: 0.5rem;
}

button {
background-color: #333;
color: white;
border: none;
cursor: pointer;
}

button:hover {
background-color: #555;
}
21 changes: 21 additions & 0 deletions app/templates/add_workout.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{% extends 'base.html' %}

{% block content %}
<h2>Add Workout</h2>
<form method="post">
<label for="exercise">Exercise:</label>
<input type="text" id="exercise" name="exercise" required><br>

<label for="sets">Sets:</label>
<input type="number" id="sets" name="sets" required><br>

<label for="reps">Reps:</label>
<input type="number" id="reps" name="reps" required><br>

<label for="weight">Weight (optional):</label>
<input type="number" step="0.01" id="weight" name="weight"><br>

<button type="submit">Add Workout</button>
</form>
<a href="{{ url_for('main.index') }}">Back</a>
{% endblock %}
17 changes: 17 additions & 0 deletions app/templates/base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OctoFit Tracker</title>
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
<header>
<h1>OctoFit Tracker</h1>
</header>
<main>
{% block content %}{% endblock %}
</main>
</body>
</html>
11 changes: 11 additions & 0 deletions app/templates/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{% extends 'base.html' %}

{% block content %}
<h2>Your Workouts</h2>
<ul>
{% for workout in workouts %}
<li>{{ workout.exercise }} - {{ workout.sets }} sets x {{ workout.reps }} reps {% if workout.weight %} @ {{ workout.weight }} lbs{% endif %}</li>
{% endfor %}
</ul>
<a href="{{ url_for('main.add_workout') }}">Add Workout</a>
{% endblock %}
5 changes: 5 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Flask==2.3.3
SQLAlchemy==2.0.23
Flask-SQLAlchemy==3.0.5
Flask-Migrate==4.0.5
python-dotenv==1.0.0
6 changes: 6 additions & 0 deletions run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from app import create_app

app = create_app()

if __name__ == '__main__':
app.run(debug=True)
4 changes: 4 additions & 0 deletions setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash
sudo apt-get update
sudo apt-get install sl
echo "export PATH=\$PATH:/usr/games" >> ~/.bashrc
3 changes: 3 additions & 0 deletions src/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<html>
<h1> Hello from the codespace!</h1>
</html>
Loading