supporiting documents uploaded. One step away from starting development.

This commit is contained in:
2025-08-02 14:43:20 -04:00
parent da8c5db890
commit 3f2f14ac66
23 changed files with 1633 additions and 0 deletions

View File

164
src/frontend/pages/auth.py Normal file
View File

@@ -0,0 +1,164 @@
from dash import html, dcc
import dash_mantine_components as dmc
from dash_iconify import DashIconify
def create_login_page():
return dmc.Container(
size="xs",
style={"marginTop": "10vh"},
children=[
dmc.Paper(
shadow="lg",
radius="md",
p="xl",
children=[
dmc.Group(
position="center",
mb="xl",
children=[
DashIconify(
icon="tabler:briefcase",
width=40,
color="#228BE6"
),
dmc.Title("Job Forge", order=2, color="blue")
]
),
dmc.Tabs(
id="auth-tabs",
value="login",
children=[
dmc.TabsList(
grow=True,
children=[
dmc.Tab("Login", value="login"),
dmc.Tab("Register", value="register")
]
),
dmc.TabsPanel(
value="login",
children=[
html.Form(
id="login-form",
children=[
dmc.TextInput(
id="login-email",
label="Email",
placeholder="your.email@example.com",
icon=DashIconify(icon="tabler:mail"),
required=True,
mb="md"
),
dmc.PasswordInput(
id="login-password",
label="Password",
placeholder="Your password",
icon=DashIconify(icon="tabler:lock"),
required=True,
mb="xl"
),
dmc.Button(
"Login",
id="login-submit",
fullWidth=True,
leftIcon=DashIconify(icon="tabler:login")
)
]
)
]
),
dmc.TabsPanel(
value="register",
children=[
html.Form(
id="register-form",
children=[
dmc.Group(
grow=True,
children=[
dmc.TextInput(
id="register-first-name",
label="First Name",
placeholder="John",
required=True,
style={"flex": 1}
),
dmc.TextInput(
id="register-last-name",
label="Last Name",
placeholder="Doe",
required=True,
style={"flex": 1}
)
]
),
dmc.TextInput(
id="register-email",
label="Email",
placeholder="your.email@example.com",
icon=DashIconify(icon="tabler:mail"),
required=True,
mt="md"
),
dmc.TextInput(
id="register-phone",
label="Phone (Optional)",
placeholder="+1 (555) 123-4567",
icon=DashIconify(icon="tabler:phone"),
mt="md"
),
dmc.PasswordInput(
id="register-password",
label="Password",
placeholder="Your password",
icon=DashIconify(icon="tabler:lock"),
required=True,
mt="md"
),
dmc.PasswordInput(
id="register-password-confirm",
label="Confirm Password",
placeholder="Confirm your password",
icon=DashIconify(icon="tabler:lock"),
required=True,
mt="md",
mb="xl"
),
dmc.Button(
"Register",
id="register-submit",
fullWidth=True,
leftIcon=DashIconify(icon="tabler:user-plus")
)
]
)
]
)
]
),
html.Div(id="auth-alerts", style={"marginTop": "1rem"})
]
)
]
)
def create_logout_confirmation():
return dmc.Modal(
title="Confirm Logout",
id="logout-modal",
children=[
dmc.Text("Are you sure you want to logout?"),
dmc.Group(
position="right",
mt="md",
children=[
dmc.Button("Cancel", id="logout-cancel", variant="outline"),
dmc.Button("Logout", id="logout-confirm", color="red")
]
)
]
)

185
src/frontend/pages/home.py Normal file
View File

@@ -0,0 +1,185 @@
from dash import html
import dash_mantine_components as dmc
from dash_iconify import DashIconify
def create_home_page():
return dmc.Container(
size="xl",
pt="md",
children=[
dmc.Title("Welcome to Job Forge", order=1, mb="lg"),
dmc.Grid(
children=[
dmc.Col(
dmc.Card(
children=[
dmc.Group(
children=[
DashIconify(
icon="tabler:search",
width=40,
color="#228BE6"
),
dmc.Stack(
spacing=5,
children=[
dmc.Text("Find Jobs", weight=600, size="lg"),
dmc.Text(
"Search and discover job opportunities",
size="sm",
color="dimmed"
)
]
)
]
),
dmc.Button(
"Search Jobs",
fullWidth=True,
mt="md",
id="home-search-jobs-btn"
)
],
withBorder=True,
shadow="sm",
radius="md",
p="lg"
),
span=6
),
dmc.Col(
dmc.Card(
children=[
dmc.Group(
children=[
DashIconify(
icon="tabler:briefcase",
width=40,
color="#40C057"
),
dmc.Stack(
spacing=5,
children=[
dmc.Text("Track Applications", weight=600, size="lg"),
dmc.Text(
"Manage your job applications",
size="sm",
color="dimmed"
)
]
)
]
),
dmc.Button(
"View Applications",
fullWidth=True,
mt="md",
color="green",
id="home-applications-btn"
)
],
withBorder=True,
shadow="sm",
radius="md",
p="lg"
),
span=6
),
dmc.Col(
dmc.Card(
children=[
dmc.Group(
children=[
DashIconify(
icon="tabler:file-text",
width=40,
color="#FD7E14"
),
dmc.Stack(
spacing=5,
children=[
dmc.Text("AI Documents", weight=600, size="lg"),
dmc.Text(
"Generate resumes and cover letters",
size="sm",
color="dimmed"
)
]
)
]
),
dmc.Button(
"Create Documents",
fullWidth=True,
mt="md",
color="orange",
id="home-documents-btn"
)
],
withBorder=True,
shadow="sm",
radius="md",
p="lg"
),
span=6
),
dmc.Col(
dmc.Card(
children=[
dmc.Group(
children=[
DashIconify(
icon="tabler:user",
width=40,
color="#BE4BDB"
),
dmc.Stack(
spacing=5,
children=[
dmc.Text("Profile", weight=600, size="lg"),
dmc.Text(
"Manage your profile and settings",
size="sm",
color="dimmed"
)
]
)
]
),
dmc.Button(
"Edit Profile",
fullWidth=True,
mt="md",
color="violet",
id="home-profile-btn"
)
],
withBorder=True,
shadow="sm",
radius="md",
p="lg"
),
span=6
)
],
gutter="md"
),
dmc.Divider(my="xl"),
dmc.Title("Recent Activity", order=2, mb="md"),
dmc.Card(
children=[
dmc.Text("No recent activity yet. Start by searching for jobs or uploading your resume!")
],
withBorder=True,
shadow="sm",
radius="md",
p="lg"
)
]
)