Initial commit - LEGO Instructions Manager v1.5.0

This commit is contained in:
2025-12-09 17:20:41 +11:00
commit 63496b1ccd
68 changed files with 9131 additions and 0 deletions

View File

@@ -0,0 +1,49 @@
{% extends "base.html" %}
{% block title %}Login - {{ app_name }}{% endblock %}
{% block content %}
<div class="row justify-content-center">
<div class="col-md-6 col-lg-5">
<div class="card shadow">
<div class="card-body p-5">
<h2 class="text-center mb-4">
<i class="bi bi-box-arrow-in-right text-danger"></i> Login
</h2>
<form method="POST" action="{{ url_for('auth.login') }}">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" class="form-control" id="username" name="username" required autofocus>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="remember" name="remember">
<label class="form-check-label" for="remember">
Remember me
</label>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-danger btn-lg">
<i class="bi bi-box-arrow-in-right"></i> Login
</button>
</div>
</form>
<hr class="my-4">
<p class="text-center text-muted mb-0">
Don't have an account?
<a href="{{ url_for('auth.register') }}">Register here</a>
</p>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,71 @@
{% extends "base.html" %}
{% block title %}Profile - {{ app_name }}{% endblock %}
{% block content %}
<div class="row">
<div class="col-lg-8 mx-auto">
<div class="card shadow">
<div class="card-header bg-danger text-white">
<h3 class="mb-0">
<i class="bi bi-person-circle"></i> User Profile
</h3>
</div>
<div class="card-body">
<div class="row mb-4">
<div class="col-md-6">
<h5>Account Information</h5>
<table class="table table-borderless">
<tr>
<th>Username:</th>
<td>{{ current_user.username }}</td>
</tr>
<tr>
<th>Email:</th>
<td>{{ current_user.email }}</td>
</tr>
<tr>
<th>Member Since:</th>
<td>{{ current_user.created_at.strftime('%B %d, %Y') }}</td>
</tr>
</table>
</div>
<div class="col-md-6">
<h5>Statistics</h5>
<div class="row text-center">
<div class="col-6 mb-3">
<div class="card bg-primary text-white">
<div class="card-body">
<h2 class="mb-0">{{ set_count }}</h2>
<small>Sets Added</small>
</div>
</div>
</div>
<div class="col-6 mb-3">
<div class="card bg-success text-white">
<div class="card-body">
<h2 class="mb-0">{{ instruction_count }}</h2>
<small>Instructions</small>
</div>
</div>
</div>
</div>
</div>
</div>
<hr>
<div class="text-center">
<a href="{{ url_for('main.dashboard') }}" class="btn btn-primary">
<i class="bi bi-speedometer2"></i> Go to Dashboard
</a>
<a href="{{ url_for('sets.list_sets') }}" class="btn btn-outline-secondary">
<i class="bi bi-grid"></i> View My Sets
</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,54 @@
{% extends "base.html" %}
{% block title %}Register - {{ app_name }}{% endblock %}
{% block content %}
<div class="row justify-content-center">
<div class="col-md-6 col-lg-5">
<div class="card shadow">
<div class="card-body p-5">
<h2 class="text-center mb-4">
<i class="bi bi-person-plus text-danger"></i> Register
</h2>
<form method="POST" action="{{ url_for('auth.register') }}">
<div class="mb-3">
<label for="username" class="form-label">Username</label>
<input type="text" class="form-control" id="username" name="username" required autofocus>
<div class="form-text">Choose a unique username (letters, numbers, underscore).</div>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password</label>
<input type="password" class="form-control" id="password" name="password" required>
<div class="form-text">Must be at least 6 characters long.</div>
</div>
<div class="mb-4">
<label for="confirm_password" class="form-label">Confirm Password</label>
<input type="password" class="form-control" id="confirm_password" name="confirm_password" required>
</div>
<div class="d-grid">
<button type="submit" class="btn btn-danger btn-lg">
<i class="bi bi-person-plus"></i> Create Account
</button>
</div>
</form>
<hr class="my-4">
<p class="text-center text-muted mb-0">
Already have an account?
<a href="{{ url_for('auth.login') }}">Login here</a>
</p>
</div>
</div>
</div>
</div>
{% endblock %}