feat: restore custom homepage and UX improvements

- Replace social media links with Mastodon, Pixelfed, and Bookwyrm
  - Mastodon: https://kapteinis.lv/@ojars
  - Pixelfed: https://pixel.kapteinis.lv/ojars
  - Bookwyrm: https://book.kapteinis.lv/user/ojars
- Update hero section tagline to "Let's Start Surfing"
- Improve hero description for AI research agent focus
- Add "Add Webpage(s)" direct link to navigation for easier crawling access
- Fix URL validation to support percent-encoded URLs (Latvian characters)
- Add accessibility labels and hover effects to social links

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <code@anthropic.com>
This commit is contained in:
Ojārs Kapteinis 2025-11-17 21:24:25 +02:00
parent 82f8bc2f14
commit f0db6631c9
4 changed files with 32 additions and 20 deletions

View file

@ -17,8 +17,8 @@ import {
} from "@/components/ui/card";
import { Label } from "@/components/ui/label";
// URL validation regex
const urlRegex = /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/;
// URL validation regex - updated to support percent-encoded URLs (e.g., Latvian characters)
const urlRegex = /^https?:\/\/[^\s]+$/;
export default function WebpageCrawler() {
const t = useTranslations("add_webpage");

View file

@ -49,6 +49,10 @@ export default function DashboardLayout({
title: "Add Sources",
url: `/dashboard/${search_space_id}/sources/add`,
},
{
title: "Add Webpage(s)",
url: `/dashboard/${search_space_id}/documents/webpage`,
},
{
title: "Manage Documents",
url: `/dashboard/${search_space_id}/documents`,

View file

@ -1,9 +1,8 @@
"use client";
import {
IconBrandDiscord,
IconBrandGithub,
IconBrandLinkedin,
IconBrandTwitter,
IconBrandMastodon,
IconBook,
IconPhoto,
} from "@tabler/icons-react";
import Link from "next/link";
import type React from "react";
@ -48,17 +47,29 @@ export function Footer() {
&copy; SurfSense 2025
</p>
<div className="flex gap-4">
<Link href="https://x.com/mod_setter">
<IconBrandTwitter className="h-6 w-6 text-neutral-500 dark:text-neutral-300" />
<Link
href="https://kapteinis.lv/@ojars"
target="_blank"
rel="noopener noreferrer"
aria-label="Mastodon"
>
<IconBrandMastodon className="h-6 w-6 text-neutral-500 dark:text-neutral-300 hover:text-neutral-700 dark:hover:text-neutral-100 transition-colors" />
</Link>
<Link href="https://www.linkedin.com/in/rohan-verma-sde/">
<IconBrandLinkedin className="h-6 w-6 text-neutral-500 dark:text-neutral-300" />
<Link
href="https://pixel.kapteinis.lv/ojars"
target="_blank"
rel="noopener noreferrer"
aria-label="Pixelfed"
>
<IconPhoto className="h-6 w-6 text-neutral-500 dark:text-neutral-300 hover:text-neutral-700 dark:hover:text-neutral-100 transition-colors" />
</Link>
<Link href="https://github.com/MODSetter">
<IconBrandGithub className="h-6 w-6 text-neutral-500 dark:text-neutral-300" />
</Link>
<Link href="https://discord.gg/ejRNvftDp9">
<IconBrandDiscord className="h-6 w-6 text-neutral-500 dark:text-neutral-300" />
<Link
href="https://book.kapteinis.lv/user/ojars"
target="_blank"
rel="noopener noreferrer"
aria-label="Bookwyrm"
>
<IconBook className="h-6 w-6 text-neutral-500 dark:text-neutral-300 hover:text-neutral-700 dark:hover:text-neutral-100 transition-colors" />
</Link>
</div>
</div>

View file

@ -59,18 +59,15 @@ export function HeroSection() {
<h2 className="relative z-50 mx-auto mb-4 mt-4 max-w-4xl text-balance text-center text-3xl font-semibold tracking-tight text-gray-700 md:text-7xl dark:text-neutral-300">
<Balancer>
The AI Workspace{" "}
<div className="relative mx-auto inline-block w-max [filter:drop-shadow(0px_1px_3px_rgba(27,_37,_80,_0.14))]">
<div className="text-black [text-shadow:0_0_rgba(0,0,0,0.1)] dark:text-white">
<span className="">Built for Teams</span>
<span className="">Let's Start Surfing</span>
</div>
</div>
</Balancer>
</h2>
{/* // TODO:aCTUAL DESCRITION */}
<p className="relative z-50 mx-auto mt-4 max-w-lg px-4 text-center text-base/6 text-gray-600 dark:text-gray-200">
Connect any LLM to your internal knowledge sources and chat with it in real time alongside
your team.
Your AI-powered research agent and personal knowledge base. Connect any LLM to your data sources and explore information like never before.
</p>
<div className="mb-10 mt-8 flex w-full flex-col items-center justify-center gap-4 px-8 sm:flex-row md:mb-20">
<Link