Skip to content

Commit

Permalink
fmt
Browse files Browse the repository at this point in the history
  • Loading branch information
elliotBraem committed Dec 21, 2024
1 parent 97575af commit 93fb718
Show file tree
Hide file tree
Showing 20 changed files with 401 additions and 217 deletions.
24 changes: 12 additions & 12 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
import js from '@eslint/js';
import globals from 'globals';
import reactHooks from 'eslint-plugin-react-hooks';
import reactRefresh from 'eslint-plugin-react-refresh';
import tseslint from 'typescript-eslint';
import js from "@eslint/js";
import globals from "globals";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from "typescript-eslint";

export default tseslint.config(
{ ignores: ['dist'] },
{ ignores: ["dist"] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
files: ["**/*.{ts,tsx}"],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
"react-hooks": reactHooks,
"react-refresh": reactRefresh,
},
rules: {
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [
'warn',
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
},
}
},
);
22 changes: 11 additions & 11 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { Routes, Route } from 'react-router-dom';
import { Suspense, lazy } from 'react';
import Footer from './components/Footer';
import LoadingSpinner from './components/LoadingSpinner';
import Navigation from './components/Navigation';
import { Routes, Route } from "react-router-dom";
import { Suspense, lazy } from "react";
import Footer from "./components/Footer";
import LoadingSpinner from "./components/LoadingSpinner";
import Navigation from "./components/Navigation";

const Home = lazy(() => import('./pages/Home'));
const ProjectPage = lazy(() => import('./pages/ProjectPage'));
const BuilderPage = lazy(() => import('./pages/BuilderPage'));
const SubmitProject = lazy(() => import('./pages/SubmitProject'));
const Process = lazy(() => import('./pages/Process'));
const Home = lazy(() => import("./pages/Home"));
const ProjectPage = lazy(() => import("./pages/ProjectPage"));
const BuilderPage = lazy(() => import("./pages/BuilderPage"));
const SubmitProject = lazy(() => import("./pages/SubmitProject"));
const Process = lazy(() => import("./pages/Process"));

function App() {
return (
Expand All @@ -30,4 +30,4 @@ function App() {
);
}

export default App;
export default App;
56 changes: 41 additions & 15 deletions src/components/BuilderProfile.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Github, Linkedin, Twitter } from 'lucide-react';
import { Link } from 'react-router-dom';
import { Builder } from '../data/builders';
import { Github, Linkedin, Twitter } from "lucide-react";
import { Link } from "react-router-dom";
import { Builder } from "../data/builders";

interface BuilderProfileProps extends Builder {}

Expand All @@ -11,57 +11,83 @@ export default function BuilderProfile({
image,
skills,
projects,
social
social,
}: BuilderProfileProps) {
return (
<div className="bg-gray-800/50 rounded-xl p-6 border border-gray-700/50 hover:border-yellow-500/50 transition-colors">
<Link to={`/builder/${id}`} className="block mb-4">
<div className="flex items-center gap-4">
<img src={image} alt={name} className="w-16 h-16 rounded-full object-cover" />
<img
src={image}
alt={name}
className="w-16 h-16 rounded-full object-cover"
/>
<div>
<h3 className="text-xl font-semibold text-white">{name}</h3>
<p className="text-gray-400">{role}</p>
</div>
</div>
</Link>

<div className="mb-4">
<h4 className="text-sm font-semibold text-gray-300 mb-2">Skills</h4>
<div className="flex flex-wrap gap-2">
{skills.map((skill) => (
<span key={skill} className="px-2 py-1 bg-gray-700/50 rounded-full text-xs text-gray-300">
<span
key={skill}
className="px-2 py-1 bg-gray-700/50 rounded-full text-xs text-gray-300"
>
{skill}
</span>
))}
</div>
</div>

<div className="mb-4">
<h4 className="text-sm font-semibold text-gray-300 mb-2">Notable Projects</h4>
<h4 className="text-sm font-semibold text-gray-300 mb-2">
Notable Projects
</h4>
<ul className="text-sm text-gray-400">
{projects.map((project) => (
<li key={project} className="mb-1">{project}</li>
<li key={project} className="mb-1">
{project}
</li>
))}
</ul>
</div>

<div className="flex gap-3">
{social.github && (
<a href={social.github} target="_blank" rel="noopener noreferrer" className="text-gray-400 hover:text-white transition-colors">
<a
href={social.github}
target="_blank"
rel="noopener noreferrer"
className="text-gray-400 hover:text-white transition-colors"
>
<Github size={20} />
</a>
)}
{social.linkedin && (
<a href={social.linkedin} target="_blank" rel="noopener noreferrer" className="text-gray-400 hover:text-white transition-colors">
<a
href={social.linkedin}
target="_blank"
rel="noopener noreferrer"
className="text-gray-400 hover:text-white transition-colors"
>
<Linkedin size={20} />
</a>
)}
{social.twitter && (
<a href={social.twitter} target="_blank" rel="noopener noreferrer" className="text-gray-400 hover:text-white transition-colors">
<a
href={social.twitter}
target="_blank"
rel="noopener noreferrer"
className="text-gray-400 hover:text-white transition-colors"
>
<Twitter size={20} />
</a>
)}
</div>
</div>
);
}
}
33 changes: 20 additions & 13 deletions src/components/Builders.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useRef, useEffect } from 'react';
import BuilderProfile from './BuilderProfile';
import { BUILDERS } from '../data/builders';
import { useRef, useEffect } from "react";
import BuilderProfile from "./BuilderProfile";
import { BUILDERS } from "../data/builders";

export default function Builders() {
const buildersRef = useRef<HTMLDivElement>(null);
Expand All @@ -11,18 +11,18 @@ export default function Builders() {
(entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add('opacity-100', 'translate-y-0');
entry.target.classList.remove('opacity-0', 'translate-y-4');
entry.target.classList.add("opacity-100", "translate-y-0");
entry.target.classList.remove("opacity-0", "translate-y-4");
}
});
},
{
threshold: 0.1,
rootMargin: '50px',
}
rootMargin: "50px",
},
);

const cards = buildersRef.current.querySelectorAll('.builder-card');
const cards = buildersRef.current.querySelectorAll(".builder-card");
cards.forEach((card) => observer.observe(card));

return () => observer.disconnect();
Expand All @@ -32,10 +32,17 @@ export default function Builders() {
return (
<section className="bg-gray-900 py-24">
<div className="container mx-auto px-6">
<h2 className="text-4xl font-bold text-white mb-4">Meet Our Builders</h2>
<p className="text-gray-400 mb-12">Expert developers and designers ready to build your MVP</p>

<div ref={buildersRef} className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
<h2 className="text-4xl font-bold text-white mb-4">
Meet Our Builders
</h2>
<p className="text-gray-400 mb-12">
Expert developers and designers ready to build your MVP
</p>

<div
ref={buildersRef}
className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8"
>
{BUILDERS.map((builder) => (
<div
key={builder.id}
Expand All @@ -48,4 +55,4 @@ export default function Builders() {
</div>
</section>
);
}
}
42 changes: 31 additions & 11 deletions src/components/Footer.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Github } from 'lucide-react';
import { Link } from 'react-router-dom';
import { Github } from "lucide-react";
import { Link } from "react-router-dom";

export default function Footer() {
const currentYear = new Date().getFullYear();
Expand All @@ -25,15 +25,23 @@ export default function Footer() {
</div>

<div>
<h3 className="text-lg font-semibold text-white mb-4">Quick Links</h3>
<h3 className="text-lg font-semibold text-white mb-4">
Quick Links
</h3>
<ul className="space-y-2">
<li>
<Link to="/submit" className="text-gray-400 hover:text-white transition-colors">
<Link
to="/submit"
className="text-gray-400 hover:text-white transition-colors"
>
Submit Project
</Link>
</li>
<li>
<Link to="/process" className="text-gray-400 hover:text-white transition-colors">
<Link
to="/process"
className="text-gray-400 hover:text-white transition-colors"
>
Our Process
</Link>
</li>
Expand All @@ -60,12 +68,18 @@ export default function Footer() {
<h3 className="text-lg font-semibold text-white mb-4">Contact</h3>
<ul className="space-y-2">
<li>
<a href="mailto:[email protected]" className="text-gray-400 hover:text-white transition-colors">
[email protected]
<a
href="mailto:[email protected]"
className="text-gray-400 hover:text-white transition-colors"
>
[email protected]
</a>
</li>
<li>
<a href="https://nearbuilders.com/tg-builders" className="text-gray-400 hover:text-white transition-colors">
<a
href="https://nearbuilders.com/tg-builders"
className="text-gray-400 hover:text-white transition-colors"
>
Telegram Community
</a>
</li>
Expand All @@ -78,15 +92,21 @@ export default function Footer() {
© {currentYear} Build DAO. All rights reserved.
</p>
<div className="flex gap-6 mt-4 md:mt-0">
<a href="#" className="text-gray-400 hover:text-white text-sm transition-colors">
<a
href="#"
className="text-gray-400 hover:text-white text-sm transition-colors"
>
Privacy Policy
</a>
<a href="#" className="text-gray-400 hover:text-white text-sm transition-colors">
<a
href="#"
className="text-gray-400 hover:text-white text-sm transition-colors"
>
Terms of Service
</a>
</div>
</div>
</div>
</footer>
);
}
}
24 changes: 14 additions & 10 deletions src/components/Hero.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
import { ArrowRight, HardHat } from 'lucide-react';
import { Link } from 'react-router-dom';
import { ArrowRight, HardHat } from "lucide-react";
import { Link } from "react-router-dom";

export default function Hero() {
return (
<div className="relative min-h-screen bg-gradient-to-br from-gray-900 via-gray-800 to-gray-900 overflow-hidden">
{/* Grid Background */}
<div className="absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHZpZXdCb3g9IjAgMCA2MCA2MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNTkuNSA2MGgtNTlWMWg1OXoiIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiYSgyNTUsMjU1LDI1NSwwLjEpIiBzdHJva2Utd2lkdGg9IjEiLz48L3N2Zz4=')] opacity-20" />

<div className="relative container mx-auto px-6 pt-32 pb-24">
<div className="flex flex-col items-center text-center">
<div className="mb-8">
<HardHat size={64} className="text-yellow-400 animate-bounce" />
</div>

<h1 className="text-5xl md:text-7xl font-bold text-white mb-6">
Build Your MVP
<span className="bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 text-transparent bg-clip-text"> Fast & Right</span>
<span className="bg-gradient-to-r from-yellow-400 via-orange-500 to-red-500 text-transparent bg-clip-text">
{" "}
Fast & Right
</span>
</h1>

<p className="text-xl md:text-2xl text-gray-300 mb-12 max-w-3xl">
Join the decentralized builder community turning ideas into production-ready MVPs in weeks, not months.
Join the decentralized builder community turning ideas into
production-ready MVPs in weeks, not months.
</p>

<div className="flex flex-col sm:flex-row gap-4">
<Link
to="/submit"
Expand All @@ -36,12 +40,12 @@ export default function Hero() {
View Our Process
</Link>
</div>

<div className="mt-16 px-4 py-2 bg-white/5 rounded-full text-sm text-gray-400">
Trusted by 100+ founders • Average MVP delivery: 3 days
</div>
</div>
</div>
</div>
);
}
}
2 changes: 1 addition & 1 deletion src/components/LoadingSpinner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ export default function LoadingSpinner() {
<div className="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-yellow-400"></div>
</div>
);
}
}
Loading

0 comments on commit 93fb718

Please sign in to comment.