Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/mindmaster/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default function MindMasterPage() {
Join the community
</a>
<Link
href="/#programs"
href="/#get-involved"
className="inline-flex min-h-[52px] items-center rounded-xl border border-[#D4D4D4] px-7 py-4 text-base font-medium"
>
See our programs
Expand Down
5 changes: 2 additions & 3 deletions app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Metadata } from "next"

import { Communities, Products, Programs } from "@/components/home/sections-mid"
import { Communities, Products } from "@/components/home/sections-mid"
import { Partnerships, Qantara, Resources, Voices } from "@/components/home/sections-bottom"
import { StartHere } from "@/components/site/start-here"
import { Hero, Impact, Network, Outcomes, Reach } from "@/components/home/sections-top"
Expand All @@ -22,9 +22,8 @@ export default function HomePage() {
<Impact />
<Outcomes />
<Voices />
<Programs />
<Products />
<StartHere />
<Products />
<Qantara />
<Partnerships />
<Resources />
Expand Down
41 changes: 9 additions & 32 deletions components/home/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const mailto = (subject: string) => `mailto:${LINKS.email}?subject=${enco
*/
export const navItems = [
{ label: "Impact", href: "/#impact" },
{ label: "Programs", href: "/#programs" },
{ label: "Programs", href: "/#get-involved" },
{ label: "Partners", href: "/#partners" },
{ label: "Resources", href: "/#resources" },
{ label: "Community links", href: "/links" },
Expand All @@ -56,7 +56,7 @@ export const navItems = [
export type ApplyProgram = {
name: string
when: string
status: "OPEN" | "CLOSED" | "GROUP"
status: "OPEN" | "CLOSED" | "GROUP" | "INVITE"
cta: string
href: string
}
Expand Down Expand Up @@ -97,6 +97,13 @@ export const applyPrograms: ApplyProgram[] = [
cta: "Learn more",
href: "/ambassador-program",
},
{
name: "MindMaster",
when: "Invite only. Ask your mentor, or email info@devweekends.com",
status: "INVITE",
cta: "Ask for an invite",
href: mailto("Invitation to MindMaster"),
},
{
name: "GSoC prep",
when: "Join the prep group on WhatsApp and Discord",
Expand Down Expand Up @@ -218,36 +225,6 @@ export const outcomes = [
},
]

export const programs = [
{
label: "Learn and build",
name: "Engineering Fellowship",
text: "A structured four-month journey. Real projects, focused study groups (clans), mentor guidance and the accountability to keep growing.",
link: { label: "Explore the fellowship", href: LINKS.fellowship },
dark: false,
},
{
label: "Contribute and grow",
name: "Open Source and GSoC",
text: "DWOSI products, DSOC cohorts and GSoC and LFX preparation. Work with maintainers and build a public record.",
link: { label: "Explore open source", href: LINKS.dwosi },
dark: false,
},
{
label: "Think and thrive",
name: "MindMaster",
text: "Human skills that make great engineers: growth mindset, communication, adaptability, teamwork, personal development and purpose.",
tag: "Invite only",
link: { label: "Courses coming soon on Buildment", href: null as string | null },
dark: false,
},
]

export const platforms = [
{ name: "Pathment", text: "Where fellowships run: clans, mentors, tasks and progress.", href: LINKS.pathment },
{ name: "Buildment", text: "Where our courses will live, MindMaster included. Coming soon.", href: LINKS.buildment },
]

/** Products not live yet link to our GitHub and keep a Coming soon tag */
export const products: { name: string; tag: string; text: string; href: string; soon?: boolean }[] = [
{ name: "Pathment", tag: "PLATFORM", text: "Runs our fellowships: clans, mentors, tasks and progress tracking.", href: LINKS.pathment },
Expand Down
74 changes: 0 additions & 74 deletions components/home/sections-mid.tsx
Original file line number Diff line number Diff line change
@@ -1,88 +1,14 @@
import { ArrowUpRight } from "lucide-react"

import { Slider } from "@/components/site/slider"
import { SmartLink } from "./smart-link"
import {
LINKS,
circles,
platforms,
products,
programs,
} from "./data"

const eyebrow = "text-[13px] font-semibold uppercase tracking-[0.14em] text-[#5C5C5C]"
const h2 = "mt-3.5 text-[clamp(36px,4.4vw,56px)] font-semibold leading-[1.05] tracking-[-0.04em]"

export function Programs() {
return (
<section id="programs" className="bg-[#F7F7F7]">
<div className="mx-auto max-w-[1200px] px-6 py-20">
<div className="flex flex-wrap items-end justify-between gap-6">
<div>
<p className={eyebrow}>Programs</p>
<h2 className={h2}>
Different paths. <span className="text-[#8A8A8A]">One purpose.</span>
</h2>
</div>
<a href="#get-involved" className="inline-flex min-h-11 items-center text-[15px] font-semibold">
Explore all opportunities →
</a>
</div>

<div className="mt-14">
<Slider label="Programs" itemClassName="w-[300px] sm:w-[340px] lg:w-[calc((100%-2rem)/3)]">
{programs.map((program) => (
<article key={program.name} className="flex min-h-[320px] w-full flex-col rounded-[20px] bg-white p-8 transition duration-200 hover:shadow-[0_22px_44px_-26px_rgba(0,0,0,0.35)] motion-safe:hover:-translate-y-1">
<p className="flex items-center justify-between gap-3 text-xs font-semibold uppercase tracking-[0.14em] text-[#5C5C5C]">
{program.label}
{"tag" in program && program.tag && (
<span className="rounded-full border border-[#D4D4D4] px-2.5 py-0.5 text-[11px] tracking-[0.1em]">{program.tag}</span>
)}
</p>
<h3 className="mt-3.5 text-[22px] font-semibold tracking-[-0.02em]">{program.name}</h3>
<p className="mt-2.5 text-[15px] leading-[1.6] text-[#5C5C5C]">{program.text}</p>
<SmartLink
href={program.link.href}
className="mt-auto inline-flex min-h-11 items-end pt-5 text-[15px] font-semibold"
fallbackClassName="mt-auto inline-flex min-h-11 items-end pt-5 text-[15px] font-medium text-[#5C5C5C]"
>
{program.link.label}
{program.link.href && " →"}
</SmartLink>
</article>
))}
</Slider>
</div>

<div className="mt-5 flex flex-wrap items-center gap-8 rounded-[20px] bg-[#0A0A0A] p-8 text-white">
<div className="min-w-0 flex-[1_1_280px]">
<p className="text-xs font-semibold uppercase tracking-[0.14em] text-[#A3A3A3]">Built by us, run on our own platforms</p>
<p className="mt-2.5 text-[22px] font-semibold tracking-[-0.02em]">Every program runs on tools our community builds.</p>
</div>
{platforms.map((platform) => (
<SmartLink
key={platform.name}
href={platform.href}
className="flex min-w-0 flex-[1_1_260px] flex-col gap-1 rounded-2xl border border-[#2A2A2A] px-[22px] py-5 hover:border-[#5A5A5A]"
fallbackClassName="flex min-w-0 flex-[1_1_260px] flex-col gap-1 rounded-2xl border border-[#2A2A2A] px-[22px] py-5"
>
<span className="flex items-center justify-between text-lg font-semibold">
{platform.name}
{platform.href ? (
<ArrowUpRight className="h-4 w-4" aria-hidden="true" />
) : (
<span className="rounded-full border border-[#3D3D3D] px-2.5 py-0.5 text-[11px] font-semibold tracking-[0.1em] text-[#A3A3A3]">SOON</span>
)}
</span>
<span className="text-sm text-[#C7C7C7]">{platform.text}</span>
</SmartLink>
))}
</div>
</div>
</section>
)
}

export function Products() {
return (
<section aria-label="Products we build">
Expand Down
2 changes: 1 addition & 1 deletion components/site/start-here.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ export function StartHere() {
<span
className={`whitespace-nowrap rounded-full px-3 py-1.5 text-xs font-semibold tracking-[0.1em] ${statusClass(program.status)}`}
>
{program.status}
{program.status === "INVITE" ? "INVITE ONLY" : program.status}
</span>
{program.status === "CLOSED" ? (
// Closed programs still have a page worth reading: say so
Expand Down
Loading