mirror of
https://github.com/emmabostian/developer-portfolios.git
synced 2025-04-20 13:18:00 +00:00
149 lines
7.8 KiB
Python
149 lines
7.8 KiB
Python
import os
|
|
import logging
|
|
from flask import Flask, render_template
|
|
|
|
# Configure logging
|
|
logging.basicConfig(level=logging.DEBUG)
|
|
|
|
# Create the app
|
|
app = Flask(__name__)
|
|
app.secret_key = os.environ.get("SESSION_SECRET")
|
|
|
|
@app.route('/')
|
|
def index():
|
|
# Project data
|
|
projects = [
|
|
{
|
|
"title": "E-Commerce Platform",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg",
|
|
"description": "A full-featured online shopping platform built with React and Node.js, featuring cart functionality, payment processing, and user accounts.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Weather Dashboard",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg",
|
|
"description": "Interactive weather application displaying forecast data with dynamic visualizations using D3.js and the OpenWeather API.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Portfolio Generator",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg",
|
|
"description": "Node.js application that generates personalized portfolio websites based on user input and customizable templates.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Task Management System",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg",
|
|
"description": "Kanban-style task management application with drag-and-drop functionality, built with React and a Express.js backend.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Recipe Finder",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg",
|
|
"description": "Web application that helps users discover recipes based on available ingredients, dietary restrictions, and meal preferences.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Fitness Tracker",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg",
|
|
"description": "Application to track workout routines, exercise progress, and fitness goals with data visualization using D3.js.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Social Media Dashboard",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg",
|
|
"description": "Consolidated dashboard for managing multiple social media accounts with analytics and scheduled posting features.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Budget Planner",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg",
|
|
"description": "Financial planning tool with expense tracking, budget creation, and visual reports using Chart.js.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Real Estate Listings",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg",
|
|
"description": "Property listing application with search filters, interactive maps, and property comparison features.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Learning Management System",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg",
|
|
"description": "Educational platform for course creation, student enrollment, and progress tracking with interactive lessons.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Travel Planner",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg",
|
|
"description": "Trip planning application with itinerary creation, destination information, and budget management features.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Blog Platform",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg",
|
|
"description": "Content management system for bloggers with markdown support, category management, and SEO optimization tools.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Music Discovery App",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg",
|
|
"description": "Application to discover new music based on preferences, listening history, and social recommendations.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
},
|
|
{
|
|
"title": "Event Booking System",
|
|
"image": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/javascript/javascript-original.svg",
|
|
"description": "Platform for creating, finding, and registering for events with calendar integration and payment processing.",
|
|
"link": "https://github.com/jonathanpeters"
|
|
}
|
|
]
|
|
|
|
# Skills data with percentages
|
|
skills = [
|
|
{"name": "HTML", "percentage": 95, "icon": "fab fa-html5"},
|
|
{"name": "CSS", "percentage": 90, "icon": "fab fa-css3-alt"},
|
|
{"name": "JavaScript", "percentage": 85, "icon": "fab fa-js"},
|
|
{"name": "React", "percentage": 80, "icon": "fab fa-react"},
|
|
{"name": "Node.js", "percentage": 75, "icon": "fab fa-node-js"},
|
|
{"name": "Express.js", "percentage": 70, "icon": "fab fa-node-js"},
|
|
{"name": "D3.js", "percentage": 65, "icon": "fas fa-chart-bar"},
|
|
{"name": "Bootstrap", "percentage": 85, "icon": "fab fa-bootstrap"},
|
|
{"name": "Tailwind CSS", "percentage": 80, "icon": "fab fa-css3"},
|
|
{"name": "Python", "percentage": 70, "icon": "fab fa-python"}
|
|
]
|
|
|
|
# Tools data
|
|
tools = [
|
|
{"name": "HTML", "icon": "fab fa-html5"},
|
|
{"name": "CSS", "icon": "fab fa-css3-alt"},
|
|
{"name": "JavaScript", "icon": "fab fa-js"},
|
|
{"name": "React", "icon": "fab fa-react"},
|
|
{"name": "Node.js", "icon": "fab fa-node-js"},
|
|
{"name": "Express.js", "icon": "fab fa-node-js"},
|
|
{"name": "D3.js", "icon": "fas fa-chart-bar"},
|
|
{"name": "Bootstrap", "icon": "fab fa-bootstrap"},
|
|
{"name": "Tailwind CSS", "icon": "fab fa-css3"},
|
|
{"name": "Python", "icon": "fab fa-python"},
|
|
{"name": "GitHub", "icon": "fab fa-github"},
|
|
{"name": "Replit", "icon": "fas fa-code"},
|
|
{"name": "VS Code", "icon": "fas fa-code"}
|
|
]
|
|
|
|
# Social media links
|
|
social_links = [
|
|
{"platform": "WhatsApp", "icon": "fab fa-whatsapp", "link": "https://wa.me/1234567890"},
|
|
{"platform": "Facebook", "icon": "fab fa-facebook-f", "link": "https://facebook.com/jonathanpeters"},
|
|
{"platform": "Twitter", "icon": "fab fa-twitter", "link": "https://twitter.com/jonathanpeters"},
|
|
{"platform": "LinkedIn", "icon": "fab fa-linkedin-in", "link": "https://linkedin.com/in/jonathanpeters"},
|
|
{"platform": "Instagram", "icon": "fab fa-instagram", "link": "https://instagram.com/jonathanpeters"},
|
|
{"platform": "GitHub", "icon": "fab fa-github", "link": "https://github.com/jonathanpeters"},
|
|
{"platform": "Replit", "icon": "fas fa-code", "link": "https://replit.com/@jonathanpeters"}
|
|
]
|
|
|
|
return render_template('index.html',
|
|
projects=projects,
|
|
skills=skills,
|
|
tools=tools,
|
|
social_links=social_links)
|