Skip to content

Commit e6b8659

Browse files
author
Artem Mikheev
committed
feat: landing page v1
1 parent a260819 commit e6b8659

File tree

13 files changed

+263
-0
lines changed

13 files changed

+263
-0
lines changed

β€Žapp/globals.cssβ€Ž

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,3 +142,38 @@
142142
@apply text-2xl;
143143
}
144144
}
145+
146+
.theme-highlight {
147+
color: var(--color-surface);
148+
font-weight: 400;
149+
white-space: nowrap;
150+
background-color: var(--color-theme);
151+
}
152+
153+
.landing-highlight {
154+
color: var(--color-element);
155+
background-size: 200% 100%;
156+
background-image: linear-gradient(
157+
to right,
158+
var(--color-surface) 50%,
159+
var(--color-theme) 50%
160+
);
161+
-webkit-transition: background-position 1s;
162+
-moz-transition: background-position 1s;
163+
}
164+
165+
.landing-member:hover .landing-highlight,
166+
.landing-achievements:hover .landing-highlight {
167+
color: var(--color-surface);
168+
background-position: -100% 0;
169+
}
170+
171+
.landing-animation {
172+
transform: scale(0.75);
173+
transition: transform 0.5s ease-in-out;
174+
filter: invert(48%) sepia(91%) saturate(5422%) hue-rotate(14deg) brightness(106%) contrast(99%);
175+
}
176+
177+
.landing-member:hover .landing-animation {
178+
transform: rotate(30deg) scale(1.1);
179+
}

β€Žapp/page.tsxβ€Ž

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,110 @@
1+
"use client";
2+
13
import Images from "@/app/components/Images";
24
import Nav from "@/app/components/Nav";
35
import Socials from "@/app/components/Socials";
6+
import Image from "next/image";
47
import Link from "next/link";
8+
import { FaArrowTurnDown, FaArrowTurnUp } from "react-icons/fa6";
9+
import Footer from "./components/Footer";
510
import Signature from "./components/Signature";
611

12+
import { useState } from "react";
13+
14+
const team = [
15+
{
16+
name: "Artem",
17+
nickname: "renbou",
18+
description: "A leader, an experienced CTF player and a valuable part of a&thinsp;<span class='landing-highlight'> HFT </span>&thinsp;company.<br /><br />Artem has a broad background and wields an extensive professional skillset ranging from Security Audits of&thinsp;<span class='landing-highlight'> DeFi </span>&thinsp;Applications to Enterprise-level&thinsp;<span class='landing-highlight'> Cloud </span>&thinsp;Engineering.",
19+
src: "images/renbou.png",
20+
skills: ["CTF", "Infrastructure", "DevOps", "Programming"],
21+
socials: [
22+
{
23+
href: "https://github.com/renbou",
24+
src: "/icons/github.svg",
25+
alt: "renbou GitHub Profile",
26+
width: 170.67,
27+
height: 166.46,
28+
},
29+
],
30+
},
31+
{
32+
name: "Seva",
33+
nickname: "Slonser",
34+
description: "Security Researcher to the very core & a profitable Bug Bounty Hunter with a number of&thinsp;<span class='landing-highlight'> CVE </span>&thinsp;registered on his name.<br /><br />Seva makes the world a safer place by catching & reporting &thinsp;<span class='landing-highlight'> 0-day </span>&thinsp; vulnerabilities in products used by millions of users every day, including <span class='font-normal'>Metamask</span>, <span class='font-normal'>Tonkeeper</span>, <span class='font-normal'>Chromium</span>, <span class='font-normal'>Gmail</span>, <span class='font-normal'>Outlook</span> and <span class='font-normal'>DOMPurify</span>.",
35+
src: "images/slonser.png",
36+
skills: ["CTF", "Speaker", "Bug Bounty", "0-day", "Research"],
37+
socials: [
38+
{
39+
href: "https://x.com/Slonser_",
40+
src: "/icons/twitter.svg",
41+
alt: "Slonser X (Twitter) Profile",
42+
width: 194.97,
43+
height: 194.56,
44+
},
45+
{
46+
href: "https://github.com/slonser",
47+
src: "/icons/github.svg",
48+
alt: "Slonser GitHub Profile",
49+
width: 170.67,
50+
height: 166.46,
51+
},
52+
{
53+
href: "https://blog.slonser.info",
54+
src: "/icons/website.svg",
55+
alt: "Slonser Blog",
56+
width: 170.67,
57+
height: 166.46,
58+
},
59+
],
60+
},
61+
{
62+
name: "Elizabeth",
63+
nickname: "qwqoro",
64+
description: "Hacker* (*Penetration Tester) by day, Security Researcher by night.<br /><br />Elizabeth is a certified offensive security specialist, who conducts&thinsp;<span class='landing-highlight'> researches </span>&thinsp;on in-the-wild vulnerabilities and threats, writes her own articles and gives talks at international conferences.",
65+
src: "images/qwqoro.png",
66+
skills: ["Speaker", "Pentest", "Audit", "Research"],
67+
socials: [
68+
{
69+
href: "https://x.com/qwqoro",
70+
src: "/icons/twitter.svg",
71+
alt: "qwqoro X (Twitter) Profile",
72+
width: 194.97,
73+
height: 194.56,
74+
},
75+
{
76+
href: "https://github.com/qwqoro",
77+
src: "/icons/github.svg",
78+
alt: "qwqoro GitHub Profile",
79+
width: 170.67,
80+
height: 166.46,
81+
},
82+
{
83+
href: "https://qwqoro.works/",
84+
src: "/icons/website.svg",
85+
alt: "qwqoro Blog",
86+
width: 170.67,
87+
height: 166.46,
88+
},
89+
],
90+
}
91+
];
92+
793
export default function Landing() {
94+
95+
const [subject, setSubject] = useState("");
96+
97+
const subjectHint = {
98+
"audit": "Discuss an <b>Audit</b> / Security Assessment / Penetration Test of your product(s), including <b>Web2</b> and <b>Mobile</b> applications, <b>Blockchain</b> technologies, <b>Web3 DApps</b> and <b>Smart Contracts</b>.",
99+
"event": "Make us your partners and ask us to <b>develop tasks</b> for your event (CTF or another form of competition, a workshop, etc.)",
100+
"invite": "Invite Neplox to participate in a <b>competition</b> (CTF, hackathon or attackathon), a <b>conference</b> or a <b>live stream</b> held by you.",
101+
"collaboration": "Invite us to participate in an <b>audit</b>, a <b>research</b> or an <b>event</b> (CTF, hackathon or attackathon) in collaboration with your team.",
102+
"conversation": "Hold a private or a public conversation with us, a <b>meeting</b>, a <b>call</b> or a <b>chat</b>, or get us to give an <b>interview</b>.",
103+
"else": "Discuss another topic with us."
104+
}
105+
8106
return (
107+
<>
9108
<header className="header-grid landing-header pt-8">
10109
{/* Branding */}
11110
<h1
@@ -84,5 +183,133 @@ export default function Landing() {
84183
))}
85184
</div>
86185
</header>
186+
187+
<div className="mt-20">
188+
<h1 className="uppercase font-sans font-normal text-2xl text-center mb-6">Core team</h1>
189+
<div className="flex flex-wrap justify-center space-x-4">
190+
{team.map((member) => (
191+
<div key={member.nickname} className="w-64 py-4 xl:w-80 text-center landing-member">
192+
<Image className="rounded-full w-40 lg:w-48 xl:w-64 h-auto m-auto hover:scale-110 transition-transform duration-300 hover:cursor-pointer"
193+
src={member.src}
194+
alt={member.nickname}
195+
/>
196+
<Image className="absolute -z-10 -mt-44 lg:-mt-56 xl:-mt-72 ml-8 lg:ml-0 w-48 lg:w-64 xl:w-80 landing-animation opacity-75" src="images/animation.gif" alt="Neplox member animation"/>
197+
<p className="text-md mt-6 font-sans font-normal"><b className="theme-highlight text-md md:text-lg lg:text-xl landing-highlight py-1 px-8">{member.name}</b></p>
198+
<span className="font-sans font-light text-sm opacity-75">@{member.nickname}</span>
199+
<p className="font-sans font-light text-sm lg:text-md xl:text-lg text-justify my-4" dangerouslySetInnerHTML={{__html: member.description}}></p>
200+
<p className="flex flex-wrap text-center justify-center text-xs font-sans font-light text-sm mb-6">{member.skills.map((skill) => (
201+
<b key={member.nickname+skill} className="px-2 py-0.5 mx-1 my-0.5 theme-highlight rounded-3xl rounded-tl-none hover:cursor-pointer hover:scale-110 transition-transform duration-300">&thinsp;{skill}&thinsp;</b>
202+
))}
203+
</p>
204+
<p className="text-center">{member.socials.map((social) => (
205+
<a
206+
key={social.alt}
207+
href={social.href}
208+
className="inline-block mx-1 h-auto hover:scale-125 transition-transform duration-300 w-5"
209+
>
210+
<Image
211+
src={social.src}
212+
alt={social.alt}
213+
width={social.width}
214+
height={social.height}
215+
/>
216+
</a>
217+
))}
218+
</p>
219+
</div>
220+
))}
221+
</div>
222+
</div>
223+
<div className="mt-20">
224+
<h1 className="uppercase font-sans font-normal text-2xl text-center mb-10">About us</h1>
225+
<p className="m-auto my-8 px-4 font-theme-serif font-normal lg:text-lg xl:text-xl text-justify leading-relaxed sm:max-w-lg md:max-w-2xl lg:max-w-3xl xl:max-w-4xl">
226+
<b className="text-theme">Neplox</b> is founded by and mainly consists of active members of <a href="https://ctftime.org/team/83435/" className="font-normal font-sans underline">C4TBuTS4D</a> CTF team. For years in a row, the team has secured its place at the very top of the leaderboard among other teams around the world.
227+
</p>
228+
<div className="grid grid-cols-3 md:grid-cols-4 gap-3">
229+
<div className="grid col-span-1 md:col-span-2 order-1 mt-10 md:mt-0">
230+
<Image className="h-auto max-w-full rounded-lg hover:cursor-pointer hover:scale-110 transition-transform duration-300"
231+
src="images/photo1.jpg"
232+
alt="Elizabeth giving a talk at SAS conference"
233+
/>
234+
</div>
235+
<div className="landing-ctf grid col-span-2 order-2">
236+
<ul className="list-none font-sans font-light md:text-md lg:text-lg xl:text-xl text-justify mt-0 md:mt-10 landing-achievements">
237+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight">#<b>5</b>th on <b>BlazCTF</b> & <b>RemedyCTF</b></li>
238+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight">#<b>1</b>st on <b>GoogleCTF</b> <span className="opacity-60">@ Tokyo</span></li>
239+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight">#<b>3</b>rd on <b>DEFCON</b> <span className="opacity-60">@ Las-Vegas</span></li>
240+
<li className="mb-2 ml-44">. . .</li>
241+
</ul>
242+
</div>
243+
<div className="grid col-span-1 order-3">
244+
<Image className="h-auto mt-2 md:mt-16 max-w-full rounded-lg hover:cursor-pointer scale-105 hover:scale-125 transition-transform duration-300"
245+
src="images/photo4.jpg"
246+
alt="C4TBuTS4D team celebrating victory atHITB"
247+
/>
248+
</div>
249+
<div className="grid col-span-2 order-4">
250+
<p className="uppercase font-horizon text-xl md:text-2xl lg:text-3xl xl:text-4xl text-center theme-highlight absolute z-10 px-8 py-2 -mt-12 -ml-24 md:-ml-16 lg:-ml-8 rounded-3xl rounded-tr-none hover:cursor-pointer hover:scale-110 transition-transform duration-300">OUR WINS&emsp;<FaArrowTurnUp className="opacity-90 inline"/></p>
251+
<Image className="h-auto max-w-full rounded-lg hover:cursor-pointer hover:scale-110 transition-transform duration-300"
252+
src="images/photo2.jpg"
253+
alt="C4TBuTS4D team celebrating top 1 at GoogleCTF"
254+
/>
255+
</div>
256+
<div className="grid col-span-3 md:col-span-2 order-7 md:order-6 float-right text-right">
257+
<ul className="list-none font-sans font-light md:text-md lg:text-lg xl:text-xl pt-0 md:pt-16 landing-achievements">
258+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight"><b>Attacks on Crypto Wallets</b>, SECCON <span className="opacity-60">@ Japan</span></li>
259+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight"><b>Cybercrime</b>, Security Analyst Summit <span className="opacity-60">@ Indonesia</span></li>
260+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight"><b>Chrome Security</b>, Positive Hack Talks <span className="opacity-60">@ India</span></li>
261+
<li className="mb-2 border border-1 border-theme px-1 md:px-4 lg:px-8 py-1 w-fit landing-highlight"><b>Attacks on Email Services</b>, PHDays <span className="opacity-60">@ Russia</span></li>
262+
<li className="mr-16">. . .</li>
263+
</ul>
264+
</div>
265+
<div className="grid col-span-2 md:col-span-1 order-5">
266+
<Image className="h-auto max-w-full rounded-lg hover:cursor-pointer hover:scale-110 md:scale-105 md:hover:scale-125 transition-transform duration-300 mt-0 md:-mt-16"
267+
src="images/photo3.jpg"
268+
alt="C4TBuTS4D at another CTF"
269+
/>
270+
</div>
271+
<div className="grid col-span-1 md:col-span-2 order-5 md:order-7">
272+
<p className="uppercase font-horizon text-xl md:text-2xl lg:text-3xl xl:text-4xl text-center theme-highlight absolute z-10 px-8 py-2 -mt-2 -ml-48 md:-ml-40 lg:-ml-36 rounded-3xl rounded-bl-none hover:cursor-pointer hover:scale-110 transition-transform duration-300"><FaArrowTurnDown className="opacity-90 inline -scale-x-100"/>&emsp;OUR RESEARCH</p>
273+
<Image className="h-auto max-w-full rounded-lg hover:cursor-pointer scale-105 hover:scale-125 md:hover:scale-110 md:scale-100 transition-transform duration-300 mt-10 md:mt-0"
274+
src="images/photo.jpg"
275+
alt="Slonser and Elizabeth giving a talk about email security"
276+
/>
277+
</div>
278+
</div>
279+
</div>
280+
<div className="mt-20 pb-8">
281+
<h1 className="uppercase text-2xl text-center mb-6">Contact us</h1>
282+
<form action="#" className="mx-auto space-y-4 max-w-md md:max-w-lg lg:max-w-xl xl:max-w-2xl">
283+
<div>
284+
<label className="font-sans font-light text-md lg:text-lg xl:text-xl">Subject</label>
285+
<select id="subject" className="mt-2 block px-4 py-3 w-full text-sm lg:text-md xl:text-lg text-gray-900 bg-gray-50 rounded-xl outline outline-gray-300 focus:ring-theme-500 focus:outline-theme-500 dark:bg-gray-700 dark:outline-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-theme-500 dark:focus:outline-theme-500 dark:shadow-sm-light border border-transparent border-0 border-r-8 hover:cursor-pointer" onChange={(e) => {setSubject(subjectHint[e.target.value as keyof typeof subjectHint])}} defaultValue="" required>
286+
<option value="" disabled>Let us know how we can help you</option>
287+
<option value="audit">Neplox, audit our product</option>
288+
<option value="event">Neplox, help us organize an event</option>
289+
<option value="invite">Neplox, participate in our event</option>
290+
<option value="collaboration">Neplox, let&apos;s team up</option>
291+
<option value="conversation">Neplox, we&apos;ve got questions</option>
292+
<option value="else">Neplox, it&apos;s not that simple</option>
293+
</select>
294+
<p className="mt-2 font-sans font-light text-sm lg:text-md xl:text-lg opacity-60" dangerouslySetInnerHTML={{__html: subject}}></p>
295+
</div>
296+
<div className="sm:col-span-2">
297+
<label className="font-sans font-light text-md lg:text-lg xl:text-xl">Your message</label>
298+
<textarea id="message" className="mt-2 block px-4 py-3 w-full text-sm lg:text-md xl:text-lg text-gray-900 bg-gray-50 rounded-xl border border-gray-300 focus:ring-theme-500 focus:border-theme-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-theme-500 dark:focus:border-theme-500 h-32" placeholder="Leave a comment, a link to the repository or anything else that you find useful." required></textarea>
299+
</div>
300+
<div>
301+
<label className="font-sans font-light text-md lg:text-lg xl:text-xl">Your contacts</label>
302+
<p className="font-sans font-light text-sm lg:text-md xl:text-lg opacity-60">How can we message you back?</p>
303+
<input type="text" id="contacts" className="mt-2 bg-gray-50 border border-gray-300 text-gray-900 text-sm lg:text-md xl:text-lg rounded-xl focus:ring-theme-500 focus:border-theme-500 block w-full px-4 py-3 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-theme-500 dark:focus:border-theme-500 dark:shadow-sm-light" placeholder="Crazy Man, [email protected]" required/>
304+
</div>
305+
<div className="text-right">
306+
<button type="submit" className="uppercase font-sans font-normal text-md lg:text-lg xl:text-xl bg-theme py-2 px-4 text-background hover:scale-110 transition-transform duration-300 rounded-3xl rounded-tl-none hover:cursor-pointer">Send message</button>
307+
</div>
308+
</form>
309+
</div>
310+
311+
{/* Footer */}
312+
<Footer />
313+
</>
87314
);
88315
}

β€Žpublic/icons/website.svgβ€Ž

Lines changed: 1 addition & 0 deletions
Loading

β€Žpublic/images/animation.gifβ€Ž

3.81 MB
Loading

β€Žpublic/images/photo.jpgβ€Ž

81.6 KB
Loading

β€Žpublic/images/photo1.jpgβ€Ž

250 KB
Loading

β€Žpublic/images/photo2.jpgβ€Ž

351 KB
Loading

β€Žpublic/images/photo3.jpgβ€Ž

398 KB
Loading

β€Žpublic/images/photo4.jpgβ€Ž

218 KB
Loading

β€Žpublic/images/photo5.jpgβ€Ž

255 KB
Loading

0 commit comments

Comments
Β (0)