This commit is contained in:
parent
ee5daffdba
commit
295c15f03b
0
src/app/components/landing/landing.component.css
Normal file
0
src/app/components/landing/landing.component.css
Normal file
79
src/app/components/landing/landing.component.html
Normal file
79
src/app/components/landing/landing.component.html
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<div class="min-h-screen bg-gray-50 text-gray-800 font-sans">
|
||||||
|
<!-- Hero Section -->
|
||||||
|
<section
|
||||||
|
class="bg-white py-20 px-6 text-center md:text-left md:px-20 flex flex-col md:flex-row items-center justify-between">
|
||||||
|
<div class="max-w-xl">
|
||||||
|
<h1 class="text-4xl md:text-6xl font-bold leading-tight mb-4">
|
||||||
|
Host Your Portfolio. <br class="hidden md:block"> Impress the World.
|
||||||
|
</h1>
|
||||||
|
<p class="text-lg text-gray-600 mb-6">
|
||||||
|
Showcase your skills with a lightning-fast portfolio for just 1€/month.
|
||||||
|
</p>
|
||||||
|
<div class="space-x-4">
|
||||||
|
<button (click)=signUp() class="bg-blue-600 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-xl shadow">
|
||||||
|
Start Free Trial
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="border border-gray-300 hover:border-blue-600 text-blue-600 hover:text-blue-700 font-semibold py-2 px-4 rounded-xl">
|
||||||
|
See Examples
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-12 md:mt-0 md:ml-12 w-full md:w-1/2">
|
||||||
|
<img alt="Portfolio Illustration" class="w-full h-auto" src="assets/hero-illustration.svg">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Features Section -->
|
||||||
|
<section class="py-20 px-6 md:px-20 bg-gray-100">
|
||||||
|
<div class="text-center mb-12">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold">Why Choose PortfolioHost?</h2>
|
||||||
|
</div>
|
||||||
|
<div class="grid gap-10 md:grid-cols-4 text-center">
|
||||||
|
<div>
|
||||||
|
<div class="text-4xl mb-4">⚡</div>
|
||||||
|
<h3 class="font-semibold text-xl mb-2">Blazing Fast Hosting</h3>
|
||||||
|
<p class="text-gray-600">NVMe servers & global CDN ensure speed and uptime.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="text-4xl mb-4">🌐</div>
|
||||||
|
<h3 class="font-semibold text-xl mb-2">Custom Domains</h3>
|
||||||
|
<p class="text-gray-600">Use your own domain or get a .portfoliohost.dev address.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="text-4xl mb-4">🚀</div>
|
||||||
|
<h3 class="font-semibold text-xl mb-2">1-Click Deploy</h3>
|
||||||
|
<p class="text-gray-600">Integrate with GitHub or push manually in seconds.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div class="text-4xl mb-4">📱</div>
|
||||||
|
<h3 class="font-semibold text-xl mb-2">Fully Responsive</h3>
|
||||||
|
<p class="text-gray-600">Mobile-first designs that look great everywhere.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Final CTA -->
|
||||||
|
<section class="bg-blue-600 py-16 px-6 md:px-20 text-white text-center">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold mb-4">Ready to impress recruiters and clients?</h2>
|
||||||
|
<p class="mb-6 text-lg">Create your portfolio in minutes — no coding required.</p>
|
||||||
|
<button class="bg-white text-blue-600 font-bold py-2 px-6 rounded-xl shadow hover:bg-gray-100">
|
||||||
|
Start My Portfolio Now
|
||||||
|
</button>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Footer -->
|
||||||
|
<footer class="bg-gray-900 text-gray-300 py-10 px-6 md:px-20 text-center md:text-left">
|
||||||
|
<div class="flex flex-col md:flex-row md:justify-between md:items-center">
|
||||||
|
<div class="mb-6 md:mb-0">
|
||||||
|
<p>© 2025 PortfolioHost™ — All rights reserved</p>
|
||||||
|
</div>
|
||||||
|
<div class="space-x-6">
|
||||||
|
<a class="hover:text-white" href="#">Docs</a>
|
||||||
|
<a class="hover:text-white" href="#">Blog</a>
|
||||||
|
<a class="hover:text-white" href="#">Legal</a>
|
||||||
|
<a class="hover:text-white" href="#">GitHub</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
23
src/app/components/landing/landing.component.spec.ts
Normal file
23
src/app/components/landing/landing.component.spec.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { LandingComponent } from './landing.component';
|
||||||
|
|
||||||
|
describe('Landing', () => {
|
||||||
|
let component: LandingComponent;
|
||||||
|
let fixture: ComponentFixture<LandingComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [LandingComponent]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(LandingComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
21
src/app/components/landing/landing.component.ts
Normal file
21
src/app/components/landing/landing.component.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import {ApiService} from '../../services/api';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-root',
|
||||||
|
templateUrl: './landing.component.html',
|
||||||
|
})
|
||||||
|
export class LandingComponent {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
private apiService: ApiService,
|
||||||
|
private router: Router,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
signUp(): void{
|
||||||
|
this.router.navigate(['/register']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user