Migrate from Next.js to Flask: Complete motorcycle adventure community website

- Replace Next.js/React implementation with Python Flask
- Add colorful blue-purple-teal gradient theme replacing red design
- Integrate logo and Transalpina panoramic background image
- Implement complete authentication system with Flask-Login
- Add community features for stories and tracks sharing
- Create responsive design with Tailwind CSS
- Add error handling with custom 404/500 pages
- Include Docker deployment configuration
- Add favicon support and proper SEO structure
- Update content for Pensiune BuonGusto accommodation
- Remove deprecated Next.js files and dependencies

Features:
 Landing page with hero section and featured content
 User registration and login system
 Community section for adventure sharing
 Admin panel for content management
 Responsive mobile-first design
 Docker containerization with PostgreSQL
 Email integration with Flask-Mail
 Form validation with WTForms
 SQLAlchemy database models
 Error pages and favicon handling
This commit is contained in:
ske087
2025-07-23 14:42:40 +03:00
parent 282cd0dfcb
commit fc463dc69a
45 changed files with 1572 additions and 11044 deletions

1
app/templates/README.md Normal file
View File

@@ -0,0 +1 @@
# Create templates directory structure

View File

@@ -0,0 +1,66 @@
{% extends "base.html" %}
{% block title %}Sign In - Moto Adventure{% endblock %}
{% block content %}
<div class="min-h-screen bg-gray-50 py-20">
<div class="max-w-md mx-auto bg-white rounded-lg shadow-lg overflow-hidden">
<div class="bg-gradient-to-r from-blue-500 via-purple-500 to-teal-500 p-6 text-white text-center">
<h2 class="text-2xl font-bold">
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Moto Adventure" class="h-8 w-8 inline mr-2">
Welcome Back
</h2>
<p class="text-blue-100 mt-1">Sign in to your account</p>
</div>
<form method="POST" class="p-6 space-y-6">
{{ form.hidden_tag() }}
<div>
{{ form.email.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.email(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent") }}
{% if form.email.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.email.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
<div>
{{ form.password.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.password(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-purple-500 focus:border-transparent") }}
{% if form.password.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.password.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
<div class="flex items-center justify-between">
<div class="flex items-center">
{{ form.remember_me(class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded") }}
{{ form.remember_me.label(class="ml-2 block text-sm text-gray-700") }}
</div>
<a href="{{ url_for('auth.forgot_password') }}" class="text-sm text-purple-600 hover:text-purple-700">
Forgot password?
</a>
</div>
{{ form.submit(class="w-full bg-gradient-to-r from-blue-600 to-purple-600 text-white py-2 px-4 rounded-lg hover:from-blue-700 hover:to-purple-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition font-medium") }}
</form>
<div class="px-6 pb-6 text-center">
<p class="text-gray-600">
Don't have an account?
<a href="{{ url_for('auth.register') }}" class="text-blue-600 hover:text-blue-700 font-medium">
Sign up here
</a>
</p>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,83 @@
{% extends "base.html" %}
{% block title %}Join Community - Moto Adventure{% endblock %}
{% block content %}
<div class="min-h-screen bg-gray-50 py-20">
<div class="max-w-md mx-auto bg-white rounded-lg shadow-lg overflow-hidden">
<div class="bg-gradient-to-r from-emerald-500 via-cyan-500 to-blue-500 p-6 text-white text-center">
<h2 class="text-2xl font-bold">
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Moto Adventure" class="h-8 w-8 inline mr-2">
Join the Adventure
</h2>
<p class="text-cyan-100 mt-1">Create your account</p>
</div>
<form method="POST" class="p-6 space-y-6">
{{ form.hidden_tag() }}
<div>
{{ form.nickname.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.nickname(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent") }}
{% if form.nickname.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.nickname.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
<div>
{{ form.email.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.email(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent") }}
{% if form.email.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.email.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
<div>
{{ form.password.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.password(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent") }}
{% if form.password.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.password.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
<p class="text-xs text-gray-500 mt-1">
At least 8 characters with letters and numbers
</p>
</div>
<div>
{{ form.password2.label(class="block text-sm font-medium text-gray-700 mb-1") }}
{{ form.password2(class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-orange-500 focus:border-transparent") }}
{% if form.password2.errors %}
<div class="text-red-500 text-sm mt-1">
{% for error in form.password2.errors %}
<p>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
</div>
{{ form.submit(class="w-full bg-orange-600 text-white py-2 px-4 rounded-lg hover:bg-orange-700 focus:outline-none focus:ring-2 focus:ring-orange-500 focus:ring-offset-2 transition font-medium") }}
</form>
<div class="px-6 pb-6 text-center">
<p class="text-gray-600">
Already have an account?
<a href="{{ url_for('auth.login') }}" class="text-orange-600 hover:text-orange-700 font-medium">
Sign in here
</a>
</p>
</div>
</div>
</div>
{% endblock %}

173
app/templates/base.html Normal file
View File

@@ -0,0 +1,173 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Moto Adventure Community{% endblock %}</title>
<link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='favicon.ico') }}">
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
</head>
<body class="bg-gray-50">
<!-- Navigation -->
<nav class="bg-gradient-to-r from-blue-600 via-purple-600 to-teal-600 shadow-lg fixed w-full z-50">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex items-center">
<a href="{{ url_for('main.index') }}" class="text-white text-xl font-bold flex items-center">
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Moto Adventure" class="h-8 w-8 mr-2">
Moto Adventure
</a>
</div>
<div class="hidden md:flex items-center space-x-8">
<a href="{{ url_for('main.index') }}#about" class="text-white hover:text-blue-200 transition">About</a>
<a href="{{ url_for('main.index') }}#accommodation" class="text-white hover:text-purple-200 transition">Accommodation</a>
<a href="{{ url_for('community.index') }}" class="text-white hover:text-teal-200 transition">Stories & Tracks</a>
{% if current_user.is_authenticated %}
<a href="{{ url_for('community.new_post') }}" class="bg-gradient-to-r from-green-500 to-emerald-500 text-white px-4 py-2 rounded-lg hover:from-green-400 hover:to-emerald-400 transition transform hover:scale-105">
<i class="fas fa-plus mr-2"></i>New Post
</a>
{% if current_user.is_admin %}
<a href="{{ url_for('admin.dashboard') }}" class="text-white hover:text-yellow-200 transition">
<i class="fas fa-cog mr-1"></i>Admin
</a>
{% endif %}
<a href="{{ url_for('auth.logout') }}" class="text-white hover:text-red-200 transition">
<i class="fas fa-sign-out-alt mr-1"></i>Logout
</a>
{% else %}
<a href="{{ url_for('auth.login') }}" class="text-white hover:text-blue-200 transition">Login</a>
<a href="{{ url_for('auth.register') }}" class="bg-gradient-to-r from-green-500 to-emerald-500 text-white px-4 py-2 rounded-lg hover:from-green-400 hover:to-emerald-400 transition transform hover:scale-105">Register</a>
{% endif %}
</div>
<!-- Mobile menu button -->
<div class="md:hidden flex items-center">
<button type="button" class="text-white hover:text-orange-200 focus:outline-none focus:text-orange-200" id="mobile-menu-btn">
<i class="fas fa-bars text-xl"></i>
</button>
</div>
</div>
</div>
<!-- Mobile menu -->
<div class="md:hidden bg-gradient-to-r from-blue-700 via-purple-700 to-teal-700 hidden" id="mobile-menu">
<div class="px-2 pt-2 pb-3 space-y-1">
<a href="{{ url_for('main.index') }}#about" class="text-white block px-3 py-2 hover:bg-blue-600 rounded">About</a>
<a href="{{ url_for('main.index') }}#accommodation" class="text-white block px-3 py-2 hover:bg-purple-600 rounded">Accommodation</a>
<a href="{{ url_for('community.index') }}" class="text-white block px-3 py-2 hover:bg-teal-600 rounded">Stories & Tracks</a>
{% if current_user.is_authenticated %}
<a href="{{ url_for('community.new_post') }}" class="text-white block px-3 py-2 hover:bg-green-600 rounded">
<i class="fas fa-plus mr-2"></i>New Post
</a>
{% if current_user.is_admin %}
<a href="{{ url_for('admin.dashboard') }}" class="text-white block px-3 py-2 hover:bg-yellow-600 rounded">
<i class="fas fa-cog mr-1"></i>Admin
</a>
{% endif %}
<a href="{{ url_for('auth.logout') }}" class="text-white block px-3 py-2 hover:bg-red-600 rounded">
<i class="fas fa-sign-out-alt mr-1"></i>Logout
</a>
{% else %}
<a href="{{ url_for('auth.login') }}" class="text-white block px-3 py-2 hover:bg-blue-600 rounded">Login</a>
<a href="{{ url_for('auth.register') }}" class="text-white block px-3 py-2 hover:bg-green-600 rounded">Register</a>
{% endif %}
</div>
</div>
</nav>
<!-- Flash Messages -->
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<div class="fixed top-20 right-4 z-50 space-y-2">
{% for category, message in messages %}
<div class="alert alert-{{ category }} px-4 py-3 rounded-lg shadow-lg max-w-sm
{% if category == 'error' %}bg-red-500 text-white
{% elif category == 'success' %}bg-green-500 text-white
{% elif category == 'warning' %}bg-yellow-500 text-white
{% else %}bg-blue-500 text-white
{% endif %}">
<div class="flex justify-between items-center">
<span>{{ message }}</span>
<button type="button" class="ml-2 text-white hover:text-gray-200" onclick="this.parentElement.parentElement.style.display='none'">
<i class="fas fa-times"></i>
</button>
</div>
</div>
{% endfor %}
</div>
{% endif %}
{% endwith %}
<!-- Main Content -->
<main class="pt-16">
{% block content %}{% endblock %}
</main>
<!-- Footer -->
<footer class="bg-gray-800 text-white py-12">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div>
<h3 class="text-xl font-bold mb-4">
<i class="fas fa-motorcycle mr-2"></i>Moto Adventure
</h3>
<p class="text-gray-300">
Join our community of motorcycle enthusiasts exploring the beautiful landscapes of Romania and beyond.
</p>
</div>
<div>
<h4 class="text-lg font-semibold mb-4">Quick Links</h4>
<ul class="space-y-2">
<li><a href="{{ url_for('main.index') }}#about" class="text-gray-300 hover:text-white transition">About</a></li>
<li><a href="{{ url_for('main.index') }}#accommodation" class="text-gray-300 hover:text-white transition">Accommodation</a></li>
<li><a href="{{ url_for('community.index') }}" class="text-gray-300 hover:text-white transition">Stories & Tracks</a></li>
</ul>
</div>
<div>
<h4 class="text-lg font-semibold mb-4">Contact</h4>
<div class="space-y-2 text-gray-300">
<p><i class="fas fa-map-marker-alt mr-2"></i>Pensiunea Buongusto, Romania</p>
<p><i class="fas fa-envelope mr-2"></i>info@moto-adv.com</p>
<p><i class="fas fa-phone mr-2"></i>+40 123 456 789</p>
</div>
</div>
</div>
<div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-300">
<p>&copy; 2024 Moto Adventure Community. All rights reserved.</p>
</div>
</div>
</footer>
<script>
// Mobile menu toggle
document.getElementById('mobile-menu-btn').addEventListener('click', function() {
const mobileMenu = document.getElementById('mobile-menu');
mobileMenu.classList.toggle('hidden');
});
// Auto-hide flash messages after 5 seconds
setTimeout(function() {
const alerts = document.querySelectorAll('.alert');
alerts.forEach(function(alert) {
alert.style.display = 'none';
});
}, 5000);
// Smooth scrolling for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,35 @@
{% extends "base.html" %}
{% block title %}Page Not Found - Moto Adventure{% endblock %}
{% block content %}
<div class="min-h-screen bg-gray-50 py-20">
<div class="max-w-2xl mx-auto text-center">
<div class="bg-white rounded-lg shadow-lg p-8">
<div class="mb-6">
<i class="fas fa-exclamation-triangle text-yellow-500 text-6xl mb-4"></i>
<h1 class="text-4xl font-bold text-gray-900 mb-2">404 - Page Not Found</h1>
<p class="text-xl text-gray-600">
Oops! The page you're looking for seems to have taken a detour.
</p>
</div>
<div class="bg-gradient-to-r from-blue-50 to-purple-50 rounded-lg p-6 mb-6">
<p class="text-gray-700 mb-4">
Don't worry, every great adventure has its unexpected turns!
Let's get you back on the right path.
</p>
</div>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="{{ url_for('main.index') }}" class="bg-gradient-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-lg font-semibold hover:from-blue-700 hover:to-purple-700 transition transform hover:scale-105">
<i class="fas fa-home mr-2"></i>Back to Home
</a>
<a href="{{ url_for('community.index') }}" class="border-2 border-blue-600 text-blue-600 px-6 py-3 rounded-lg font-semibold hover:bg-blue-600 hover:text-white transition transform hover:scale-105">
<i class="fas fa-users mr-2"></i>Browse Community
</a>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,35 @@
{% extends "base.html" %}
{% block title %}Server Error - Moto Adventure{% endblock %}
{% block content %}
<div class="min-h-screen bg-gray-50 py-20">
<div class="max-w-2xl mx-auto text-center">
<div class="bg-white rounded-lg shadow-lg p-8">
<div class="mb-6">
<i class="fas fa-tools text-red-500 text-6xl mb-4"></i>
<h1 class="text-4xl font-bold text-gray-900 mb-2">500 - Server Error</h1>
<p class="text-xl text-gray-600">
Something went wrong on our end. We're working to fix it!
</p>
</div>
<div class="bg-gradient-to-r from-red-50 to-orange-50 rounded-lg p-6 mb-6">
<p class="text-gray-700 mb-4">
Our technical team has been notified and is working to resolve the issue.
Please try again in a few moments.
</p>
</div>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="{{ url_for('main.index') }}" class="bg-gradient-to-r from-blue-600 to-purple-600 text-white px-6 py-3 rounded-lg font-semibold hover:from-blue-700 hover:to-purple-700 transition transform hover:scale-105">
<i class="fas fa-home mr-2"></i>Back to Home
</a>
<button onclick="window.location.reload()" class="border-2 border-blue-600 text-blue-600 px-6 py-3 rounded-lg font-semibold hover:bg-blue-600 hover:text-white transition transform hover:scale-105">
<i class="fas fa-redo mr-2"></i>Try Again
</button>
</div>
</div>
</div>
</div>
{% endblock %}

275
app/templates/index.html Normal file
View File

@@ -0,0 +1,275 @@
{% extends "base.html" %}
{% block title %}Moto Adventure Community - Explore Romania on Two Wheels{% endblock %}
{% block content %}
<!-- Hero Section -->
<section class="relative bg-gradient-to-br from-blue-600 via-purple-600 to-teal-600 text-white py-24" style="background-image: url('{{ url_for('static', filename='images/pano transalpina.jpg') }}'); background-size: cover; background-position: center; background-blend-mode: overlay;">
<div class="absolute inset-0 bg-black opacity-40"></div>
<div class="relative max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<div class="flex justify-center mb-6">
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Moto Adventure" class="h-24 w-24 mb-4">
</div>
<h1 class="text-5xl md:text-7xl font-bold mb-6 leading-tight drop-shadow-lg">
Adventure Awaits
</h1>
<p class="text-xl md:text-2xl mb-8 max-w-3xl mx-auto leading-relaxed drop-shadow-md">
Discover Romania's most breathtaking motorcycle routes, connect with fellow riders,
and find the perfect accommodation for your next adventure.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
<a href="#about" class="bg-white text-blue-600 px-8 py-4 rounded-lg font-semibold text-lg hover:bg-gray-100 transition transform hover:scale-105 shadow-lg">
<i class="fas fa-compass mr-2"></i>Start Exploring
</a>
<a href="{{ url_for('community.index') }}" class="border-2 border-white text-white px-8 py-4 rounded-lg font-semibold text-lg hover:bg-white hover:text-purple-600 transition transform hover:scale-105">
<i class="fas fa-users mr-2"></i>Join Community
</a>
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="py-20 bg-white">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-16">
<h2 class="text-4xl font-bold text-gray-900 mb-4">
<i class="fas fa-route text-blue-600 mr-3"></i>
Discover Romania's Hidden Gems
</h2>
<p class="text-xl text-gray-600 max-w-3xl mx-auto">
Join our passionate community of motorcycle enthusiasts as we explore the most spectacular
routes Romania has to offer. From winding mountain passes to scenic coastal roads.
</p>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div class="space-y-6">
<div class="flex items-start space-x-4">
<div class="bg-blue-100 p-3 rounded-lg">
<i class="fas fa-mountain text-blue-600 text-xl"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">Epic Mountain Routes</h3>
<p class="text-gray-600">
Experience breathtaking rides through the Carpathian Mountains, including the famous
Transfăgărășan and Transalpina highways.
</p>
</div>
</div>
<div class="flex items-start space-x-4">
<div class="bg-purple-100 p-3 rounded-lg">
<i class="fas fa-users text-purple-600 text-xl"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">Vibrant Community</h3>
<p class="text-gray-600">
Connect with fellow riders, share your adventures, and discover new routes through
our active community platform.
</p>
</div>
</div>
<div class="flex items-start space-x-4">
<div class="bg-teal-100 p-3 rounded-lg">
<i class="fas fa-map-marked-alt text-teal-600 text-xl"></i>
</div>
<div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">GPS Tracks & Guides</h3>
<p class="text-gray-600">
Download detailed GPS tracks, get insider tips, and access comprehensive guides
for the best motorcycle routes.
</p>
</div>
</div>
</div>
<div class="relative">
<div class="bg-gradient-to-br from-emerald-400 via-cyan-400 to-blue-500 rounded-2xl p-8 text-white shadow-2xl transform rotate-3 hover:rotate-0 transition-transform duration-300">
<div class="bg-white bg-opacity-20 rounded-lg p-6 mb-6">
<i class="fas fa-motorcycle text-4xl mb-4"></i>
<h3 class="text-2xl font-bold mb-2">Adventure Stats</h3>
</div>
<div class="grid grid-cols-2 gap-6">
<div class="text-center">
<div class="text-3xl font-bold">150+</div>
<div class="text-blue-100">Routes Mapped</div>
</div>
<div class="text-center">
<div class="text-3xl font-bold">500+</div>
<div class="text-cyan-100">Active Riders</div>
</div>
<div class="text-center">
<div class="text-3xl font-bold">50K+</div>
<div class="text-emerald-100">KMs Explored</div>
</div>
<div class="text-center">
<div class="text-3xl font-bold">25+</div>
<div class="text-blue-100">Counties Covered</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Accommodation Section -->
<section id="accommodation" class="py-20 bg-gray-50">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-16">
<h2 class="text-4xl font-bold text-gray-900 mb-4">
<i class="fas fa-bed text-purple-600 mr-3"></i>
Pensiune BuonGusto
</h2>
<p class="text-xl text-gray-600 max-w-3xl mx-auto">
Your perfect base camp for motorcycle adventures. Enjoy comfortable accommodation,
secure parking, and warm hospitality in the heart of Romania's scenic landscapes.
</p>
</div>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center">
<div class="space-y-6">
<div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-blue-500">
<h3 class="text-xl font-semibold text-gray-900 mb-3 flex items-center">
<i class="fas fa-shield-alt text-blue-600 mr-2"></i>
Secure Motorcycle Parking
</h3>
<p class="text-gray-600">
Rest easy knowing your motorcycle is safe in our covered, monitored parking area.
We understand how precious your bike is to you.
</p>
</div>
<div class="bg-white p-6 rounded-xl shadow-lg border-l-4 border-teal-500">
<h3 class="text-xl font-semibold text-gray-900 mb-3 flex items-center">
<i class="fas fa-map-marked-alt text-teal-600 mr-2"></i>
Local Route Expertise
</h3>
<p class="text-gray-600">
Our staff are passionate about motorcycling and can recommend the best local routes,
hidden gems, and must-see attractions in the area.
</p>
</div>
</div>
<div class="relative">
<div class="bg-white rounded-2xl shadow-2xl overflow-hidden">
<div class="bg-gradient-to-r from-purple-500 to-blue-500 p-6 text-white">
<h3 class="text-2xl font-bold mb-2">
<i class="fas fa-star mr-2"></i>
Premium Accommodation
</h3>
<p class="text-blue-100">Experience comfort and convenience</p>
</div>
<div class="p-6 space-y-4">
<div class="flex items-center justify-between">
<span class="text-gray-600">Comfortable Rooms</span>
<i class="fas fa-check text-green-500"></i>
</div>
<div class="flex items-center justify-between">
<span class="text-gray-600">Free WiFi</span>
<i class="fas fa-check text-green-500"></i>
</div>
<div class="flex items-center justify-between">
<span class="text-gray-600">Draft Beers for Responsible Drivers</span>
<i class="fas fa-check text-green-500"></i>
</div>
<div class="flex items-center justify-between">
<span class="text-gray-600">Route Planning</span>
<i class="fas fa-check text-green-500"></i>
</div>
<div class="border-t pt-4">
<div class="flex items-center justify-between text-lg font-semibold">
<span>Starting from</span>
<span class="text-purple-600">€45/night</span>
</div>
</div>
<a href="https://buongusto.ro/index.php/book-now/" target="_blank" class="w-full bg-gradient-to-r from-purple-600 to-blue-600 text-white py-3 rounded-lg font-semibold hover:from-purple-700 hover:to-blue-700 transition transform hover:scale-105 block text-center">
<i class="fas fa-calendar-alt mr-2"></i>
Book Now
</a>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Community Section -->
<section id="community" class="py-20 bg-white">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="text-center mb-16">
<h2 class="text-4xl font-bold text-gray-900 mb-4">
<i class="fas fa-users text-teal-600 mr-3"></i>
Stories & Tracks Community
</h2>
<p class="text-xl text-gray-600 max-w-3xl mx-auto">
Share your adventures, discover new routes, and connect with fellow motorcycle enthusiasts.
Every ride has a story - what's yours?
</p>
</div>
<div class="grid grid-cols-1 md:grid-cols-3 gap-8 mb-12">
<div class="text-center group">
<div class="bg-emerald-100 w-20 h-20 rounded-full flex items-center justify-center mx-auto mb-4 group-hover:bg-emerald-200 transition">
<i class="fas fa-camera text-emerald-600 text-2xl"></i>
</div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">Share Photos</h3>
<p class="text-gray-600">
Upload stunning photos from your rides and inspire others to explore new destinations.
</p>
</div>
<div class="text-center group">
<div class="bg-blue-100 w-20 h-20 rounded-full flex items-center justify-center mx-auto mb-4 group-hover:bg-blue-200 transition">
<i class="fas fa-route text-blue-600 text-2xl"></i>
</div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">Upload GPS Tracks</h3>
<p class="text-gray-600">
Share your favorite routes with detailed GPS tracks that others can download and follow.
</p>
</div>
<div class="text-center group">
<div class="bg-purple-100 w-20 h-20 rounded-full flex items-center justify-center mx-auto mb-4 group-hover:bg-purple-200 transition">
<i class="fas fa-comments text-purple-600 text-2xl"></i>
</div>
<h3 class="text-xl font-semibold text-gray-900 mb-2">Connect & Discuss</h3>
<p class="text-gray-600">
Join conversations, get tips, and plan group rides with our active community.
</p>
</div>
</div>
<div class="text-center">
<div class="bg-gradient-to-r from-emerald-500 via-cyan-500 to-blue-500 rounded-2xl p-8 text-white">
<h3 class="text-2xl font-bold mb-4">Ready to Share Your Adventure?</h3>
<p class="text-blue-100 mb-6 text-lg">
Join thousands of riders who are already sharing their stories and discovering new routes.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
{% if current_user.is_authenticated %}
<a href="{{ url_for('community.new_post') }}" class="bg-white text-blue-600 px-8 py-3 rounded-lg font-semibold hover:bg-gray-100 transition transform hover:scale-105">
<i class="fas fa-plus mr-2"></i>Create New Post
</a>
<a href="{{ url_for('community.index') }}" class="border-2 border-white text-white px-8 py-3 rounded-lg font-semibold hover:bg-white hover:text-cyan-600 transition transform hover:scale-105">
<i class="fas fa-eye mr-2"></i>Browse Stories
</a>
{% else %}
<a href="{{ url_for('auth.register') }}" class="bg-white text-blue-600 px-8 py-3 rounded-lg font-semibold hover:bg-gray-100 transition transform hover:scale-105">
<i class="fas fa-user-plus mr-2"></i>Join Community
</a>
<a href="{{ url_for('community.index') }}" class="border-2 border-white text-white px-8 py-3 rounded-lg font-semibold hover:bg-white hover:text-cyan-600 transition transform hover:scale-105">
<i class="fas fa-eye mr-2"></i>Browse Stories
</a>
{% endif %}
</div>
</div>
</div>
</div>
</section>
{% endblock %}