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
16 changes: 8 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@ jobs:
- name: Run lint
run: npm run lint

- name: Generate types from remote
if: ${{ env.SUPABASE_PROJECT_ID && env.SUPABASE_ACCESS_TOKEN }}
env:
SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
run: |
npx supabase gen types typescript \
--project-id ${{ secrets.SUPABASE_PROJECT_ID }} \
> app/supabase-types.ts
# - name: Generate types from remote
# if: ${{ env.SUPABASE_PROJECT_ID && env.SUPABASE_ACCESS_TOKEN }}
# env:
# SUPABASE_ACCESS_TOKEN: ${{ secrets.SUPABASE_ACCESS_TOKEN }}
# run: |
# npx supabase gen types typescript \
# --project-id ${{ secrets.SUPABASE_PROJECT_ID }} \
# > app/supabase-types.ts

# this will be suspended for now
# - name: Run migrations
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# devpulse

Measure and share your coding productivity with personalized leaderboards. Compare your progress with peers while keeping full control over privacy and leaderboard settings.
Measure and share your coding productivity with personalized leaderboards. Compare your progress with peers while keeping full control over privacy and leaderboard settings with project management features.

## Getting Started
Install the dependencies:
Expand All @@ -18,7 +18,7 @@ First by creating a supabase cloud project:
- click `New Project`
- choose:
- Organization → (create one if needed)
- Project Name → e.g. devpulse-waka
- Project Name → e.g. devpulse
- Database Password → choose a secure one
- Region → pick the nearest location
- Click Create new project
Expand Down Expand Up @@ -132,7 +132,7 @@ Contributions to devpulse are welcome! Please follow these guidelines:

> Pull requests that modify existing working features without prior discussion may not be merged.

Help us keep the codebase ("DevPulse") clean, stable, and maintainable.
Help us keep the codebase ("Devpulse") clean, stable, and maintainable.

## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
36 changes: 18 additions & 18 deletions app/(auth)/login/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faChevronLeft } from "@fortawesome/free-solid-svg-icons";

export const metadata: Metadata = {
title: "Login - DevPulse",
title: "Login - Devpulse",
description:
"Log in to your DevPulse account to monitor your coding activity and compete on leaderboards.",
"Log in to your Devpulse account to monitor your coding activity and compete on leaderboards.",
keywords: [
"DevPulse",
"Devpulse",
"login",
"coding activity tracker",
"developer leaderboards",
Expand All @@ -23,31 +23,31 @@ export const metadata: Metadata = {
"productivity insights",
],
openGraph: {
title: "Login - DevPulse",
title: "Login - Devpulse",
description:
"Log in to your DevPulse account to monitor your coding activity and compete on leaderboards.",
url: "https://devpulse-waka.vercel.app/login",
siteName: "DevPulse",
"Log in to your Devpulse account to monitor your coding activity and compete on leaderboards.",
url: "https://devpulse.hallofcodes.org/login",
siteName: "Devpulse",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
width: 1200,
height: 630,
alt: "DevPulse Cover Image",
alt: "Devpulse Cover Image",
},
],
locale: "en_US",
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Login - DevPulse",
title: "Login - Devpulse",
description:
"Log in to your DevPulse account to monitor your coding activity and compete on leaderboards.",
"Log in to your Devpulse account to monitor your coding activity and compete on leaderboards.",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
alt: "DevPulse Cover Image",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
alt: "Devpulse Cover Image",
},
],
},
Expand Down Expand Up @@ -84,9 +84,9 @@ export default async function Login(props: {
href="/"
className="flex items-center gap-3 w-fit hover:opacity-80 transition"
>
<Image src="/logo.svg" alt="DevPulse Logo" width={40} height={40} />
<Image src="/logo.svg" alt="Devpulse Logo" width={40} height={40} />
<span className="text-2xl font-bold tracking-tight text-white">
DevPulse
Devpulse
</span>
</Link>
</div>
Expand Down Expand Up @@ -136,7 +136,7 @@ export default async function Login(props: {
</div>

<div className="relative z-10 text-sm text-gray-500 font-medium">
&copy; {new Date().getFullYear()} DevPulse. All rights reserved.
&copy; {new Date().getFullYear()} Devpulse. All rights reserved.
</div>
</div>

Expand All @@ -146,8 +146,8 @@ export default async function Login(props: {

<div className="w-full max-w-sm relative z-10">
<div className="lg:hidden flex items-center justify-center gap-3 mb-10">
<Image src="/logo.svg" alt="DevPulse Logo" width={40} height={40} />
<h2 className="text-3xl font-bold text-white">DevPulse</h2>
<Image src="/logo.svg" alt="Devpulse Logo" width={40} height={40} />
<h2 className="text-3xl font-bold text-white">Devpulse</h2>
</div>

<div className="mb-8 text-left">
Expand Down
34 changes: 17 additions & 17 deletions app/(auth)/signup/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,35 +6,35 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faChevronLeft } from "@fortawesome/free-solid-svg-icons";

export const metadata: Metadata = {
title: "Sign Up - DevPulse",
title: "Sign Up - Devpulse",
description:
"Create a DevPulse account to monitor your coding activity and compete on leaderboards.",
"Create a Devpulse account to monitor your coding activity and compete on leaderboards.",
openGraph: {
title: "Sign Up - DevPulse",
title: "Sign Up - Devpulse",
description:
"Create a DevPulse account to monitor your coding activity and compete on leaderboards.",
url: "https://devpulse-waka.vercel.app/signup",
siteName: "DevPulse",
"Create a Devpulse account to monitor your coding activity and compete on leaderboards.",
url: "https://devpulse.hallofcodes.org/signup",
siteName: "Devpulse",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
width: 1200,
height: 630,
alt: "DevPulse Cover Image",
alt: "Devpulse Cover Image",
},
],
locale: "en_US",
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Sign Up - DevPulse",
title: "Sign Up - Devpulse",
description:
"Create a DevPulse account to monitor your coding activity and compete on leaderboards.",
"Create a Devpulse account to monitor your coding activity and compete on leaderboards.",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
alt: "DevPulse Cover Image",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
alt: "Devpulse Cover Image",
},
],
},
Expand Down Expand Up @@ -71,9 +71,9 @@ export default async function Signup(props: {
href="/"
className="flex items-center gap-3 w-fit hover:opacity-80 transition"
>
<Image src="/logo.svg" alt="DevPulse Logo" width={40} height={40} />
<Image src="/logo.svg" alt="Devpulse Logo" width={40} height={40} />
<span className="text-2xl font-bold tracking-tight text-white">
DevPulse
Devpulse
</span>
</Link>
</div>
Expand Down Expand Up @@ -123,7 +123,7 @@ export default async function Signup(props: {
</div>

<div className="relative z-10 text-sm text-gray-500 font-medium">
&copy; {new Date().getFullYear()} DevPulse. All rights reserved.
&copy; {new Date().getFullYear()} Devpulse. All rights reserved.
</div>
</div>

Expand All @@ -133,8 +133,8 @@ export default async function Signup(props: {

<div className="w-full max-w-sm relative z-10">
<div className="lg:hidden flex items-center justify-center gap-3 mb-10">
<Image src="/logo.svg" alt="DevPulse Logo" width={40} height={40} />
<h2 className="text-3xl font-bold text-white">DevPulse</h2>
<Image src="/logo.svg" alt="Devpulse Logo" width={40} height={40} />
<h2 className="text-3xl font-bold text-white">Devpulse</h2>
</div>

<div className="mb-8 text-left">
Expand Down
30 changes: 15 additions & 15 deletions app/(public)/flex/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import { faExternalLink } from "@fortawesome/free-solid-svg-icons";
import { Metadata } from "next";

export const metadata: Metadata = {
title: "Flexes - DevPulse",
title: "Flexes - Devpulse",
description:
"Flex your coding projects and share your achievements with the DevPulse community. See what others are working on and get inspired!",
"Flex your coding projects and share your achievements with the Devpulse community. See what others are working on and get inspired!",
keywords: [
"DevPulse",
"Devpulse",
"coding flexes",
"developer projects",
"coding achievements",
Expand All @@ -23,31 +23,31 @@ export const metadata: Metadata = {
"coding inspiration",
],
openGraph: {
title: "Flexes - DevPulse",
title: "Flexes - Devpulse",
description:
"Flex your coding projects and share your achievements with the DevPulse community. See what others are working on and get inspired!",
url: "https://devpulse-waka.vercel.app/flex",
siteName: "DevPulse",
"Flex your coding projects and share your achievements with the Devpulse community. See what others are working on and get inspired!",
url: "https://devpulse.hallofcodes.org/flex",
siteName: "Devpulse",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
width: 1200,
height: 630,
alt: "DevPulse Cover Image",
alt: "Devpulse Cover Image",
},
],
locale: "en_US",
type: "website",
},
twitter: {
card: "summary_large_image",
title: "Flexes - DevPulse",
title: "Flexes - Devpulse",
description:
"Flex your coding projects and share your achievements with the DevPulse community. See what others are working on and get inspired!",
"Flex your coding projects and share your achievements with the Devpulse community. See what others are working on and get inspired!",
images: [
{
url: "https://devpulse-waka.vercel.app/images/devpulse.cover.png",
alt: "DevPulse Cover Image",
url: "https://devpulse.hallofcodes.org/images/devpulse.cover.png",
alt: "Devpulse Cover Image",
},
],
},
Expand All @@ -73,8 +73,8 @@ export default async function Flexs() {
<BackButton href="/" />

<div className="flex justify-center items-center gap-3 mb-8">
<Image src="/logo.svg" alt="DevPulse Logo" width={36} height={36} />
<h1 className="text-3xl font-bold text-white">DevPulse Flexes</h1>
<Image src="/logo.svg" alt="Devpulse Logo" width={36} height={36} />
<h1 className="text-3xl font-bold text-white">Devpulse Flexes</h1>
</div>

{data?.length === 0 && (
Expand Down
8 changes: 4 additions & 4 deletions app/(public)/join/[code]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {

if (!leaderboard) {
return {
title: "Invite Not Found - DevPulse",
title: "Invite Not Found - Devpulse",
description: "This invite link is invalid or has expired.",
};
}
Expand All @@ -31,16 +31,16 @@ export async function generateMetadata({ params }: Props): Promise<Metadata> {
const description =
leaderboard?.description && leaderboard.description.length > 0
? leaderboard.description
: `Join the ${leaderboard.name} leaderboard on DevPulse and compete with other developers. Track your coding activity and climb the ranks!`;
: `Join the ${leaderboard.name} leaderboard on Devpulse and compete with other developers. Track your coding activity and climb the ranks!`;

return {
title: `${title} - DevPulse`,
title: `${title} - Devpulse`,
description,
openGraph: {
title,
description,
type: "website",
siteName: "DevPulse",
siteName: "Devpulse",
url: `/join?id=${encodeURIComponent(code)}`,
},
twitter: {
Expand Down
22 changes: 11 additions & 11 deletions app/(public)/join/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ export async function generateMetadata({

if (!code) {
return {
title: "Join - DevPulse",
description: "Open an invite link to join a DevPulse leaderboard.",
title: "Join - Devpulse",
description: "Open an invite link to join a Devpulse leaderboard.",
};
}

const leaderboard = await getLeaderboard(code);
if (!leaderboard) {
return {
title: "Invite Not Found - DevPulse",
title: "Invite Not Found - Devpulse",
description: "This invite link is invalid or has expired.",
};
}
Expand All @@ -60,17 +60,17 @@ export async function generateMetadata({
const description =
leaderboard.description && leaderboard.description?.length > 0
? leaderboard.description
: `Join the ${leaderboard.name} leaderboard on DevPulse and compete with other developers. Track your coding activity and climb the ranks!`;
: `Join the ${leaderboard.name} leaderboard on Devpulse and compete with other developers. Track your coding activity and climb the ranks!`;

return {
title: `${title} - DevPulse`,
title: `${title} - Devpulse`,
description,
openGraph: {
title,
description,
type: "website",
siteName: "DevPulse",
url: `https://devpulse-waka.vercel.app/join?id=${encodeURIComponent(code)}`,
siteName: "Devpulse",
url: `https://devpulse.hallofcodes.org/join?id=${encodeURIComponent(code)}`,
},
twitter: {
card: "summary_large_image",
Expand Down Expand Up @@ -102,7 +102,7 @@ export default async function JoinPage({ searchParams }: Props) {
<span className="font-mono">/join?id=XXXXXXXX</span>.
</p>
<Link href="/" className="btn-primary inline-block px-6 py-3 text-sm">
Go to DevPulse
Go to Devpulse
</Link>
</div>
</div>
Expand All @@ -128,7 +128,7 @@ export default async function JoinPage({ searchParams }: Props) {
This invite link is invalid or has expired.
</p>
<Link href="/" className="btn-primary inline-block px-6 py-3 text-sm">
Go to DevPulse
Go to Devpulse
</Link>
</div>
</div>
Expand Down Expand Up @@ -162,7 +162,7 @@ export default async function JoinPage({ searchParams }: Props) {
<div className="glass-card max-w-lg w-full p-8 md:p-10 text-center">
<div className="flex justify-center mb-6">
<div className="w-16 h-16 rounded-2xl bg-indigo-500/10 border border-indigo-500/20 flex items-center justify-center shadow-[0_0_30px_rgba(99,102,241,0.15)]">
<Image src="/logo.svg" alt="DevPulse" width={36} height={36} />
<Image src="/logo.svg" alt="Devpulse" width={36} height={36} />
</div>
</div>

Expand Down Expand Up @@ -212,7 +212,7 @@ export default async function JoinPage({ searchParams }: Props) {
href="/"
className="text-indigo-400/70 hover:text-indigo-400 transition-colors"
>
DevPulse
Devpulse
</Link>{" "}
&mdash; Track your coding activity &amp; compete
</p>
Expand Down
Loading
Loading