From 3f2d3560dc04dbee23237d896c1325389035c738 Mon Sep 17 00:00:00 2001 From: MohamedBassem Date: Sun, 6 Apr 2025 22:57:07 +0100 Subject: refactor: Migrate the landing page from nextjs to vite --- apps/landing/src/App.tsx | 13 +++ apps/landing/src/Homepage.tsx | 256 ++++++++++++++++++++++++++++++++++++++++++ apps/landing/src/Privacy.tsx | 217 +++++++++++++++++++++++++++++++++++ apps/landing/src/main.tsx | 9 ++ 4 files changed, 495 insertions(+) create mode 100644 apps/landing/src/App.tsx create mode 100644 apps/landing/src/Homepage.tsx create mode 100644 apps/landing/src/Privacy.tsx create mode 100644 apps/landing/src/main.tsx (limited to 'apps/landing/src') diff --git a/apps/landing/src/App.tsx b/apps/landing/src/App.tsx new file mode 100644 index 00000000..06a1e5b8 --- /dev/null +++ b/apps/landing/src/App.tsx @@ -0,0 +1,13 @@ +import Homepage from "@/src/Homepage"; +import Privacy from "@/src/Privacy"; + +import "@hoarder/tailwind-config/globals.css"; + +export default function App() { + // Poor man router + if (window.location.pathname === "/privacy") { + return ; + } + + return ; +} diff --git a/apps/landing/src/Homepage.tsx b/apps/landing/src/Homepage.tsx new file mode 100644 index 00000000..85290a26 --- /dev/null +++ b/apps/landing/src/Homepage.tsx @@ -0,0 +1,256 @@ +import { buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { + ArrowDownNarrowWide, + Bookmark, + BrainCircuit, + CheckCheck, + Github, + Server, + SunMoon, + TextSearch, + WalletCards, +} from "lucide-react"; + +import appStoreBadge from "/app-store-badge.png?url"; +import chromeExtensionBadge from "/chrome-extension-badge.png?url"; +import firefoxAddonBadge from "/firefox-addon.png?url"; +import playStoreBadge from "/google-play-badge.webp?url"; +import screenshot from "/hero.webp?url"; +import Logo from "/icons/karakeep-full.svg?url"; + +const GITHUB_LINK = "https://github.com/karakeep-app/karakeep"; +const DOCS_LINK = "https://docs.karakeep.app"; +const DEMO_LINK = "https://try.karakeep.app"; + +const platforms = [ + { + name: "iOS", + url: "https://apps.apple.com/us/app/hoarder-app/id6479258022", + badge: appStoreBadge, + }, + { + name: "Android", + url: "https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share", + badge: playStoreBadge, + }, + { + name: "Chrome Extension", + url: "https://chromewebstore.google.com/detail/hoarder/kgcjekpmcjjogibpjebkhaanilehneje", + badge: chromeExtensionBadge, + }, + { + name: "Firefox Addon", + url: "https://addons.mozilla.org/en-US/firefox/addon/hoarder/", + badge: firefoxAddonBadge, + }, +]; + +const featuresList = [ + { + icon: Bookmark, + title: "Bookmark", + description: "Bookmark links, take simple notes and store images and pdfs.", + }, + { + icon: BrainCircuit, + title: "AI Tagging", + description: + "Automatically tags your bookmarks using AI for faster retrieval.", + }, + { + icon: ArrowDownNarrowWide, + title: "Auto Fetch", + description: + "Automatically fetches title, description and images for links.", + }, + { + icon: WalletCards, + title: "Lists", + description: "Sort your bookmarks into lists for better organization.", + }, + { + icon: TextSearch, + title: "Search", + description: "Search through all your bookmarks using full text search.", + }, + { + icon: Server, + title: "Self Hosting", + description: "Easy self hosting with docker for privacy and control.", + }, + { + icon: CheckCheck, + title: "Bulk Actions", + description: "Quickly manage your bookmarks with bulk actions.", + }, + { + icon: SunMoon, + title: "Dark Mode", + description: "Karakeep supports dark mode for better reading experience.", + }, +]; + +function NavBar() { + return ( +
+ logo +
+ + Docs + + + GitHub + + + Try Demo + +
+
+ ); +} + +function Hero() { + return ( +
+
+

+ The{" "} + + Bookmark Everything + {" "} + App +

+
+

+ Quickly save links, notes, and images and karakeep will + automatically tag them for you using AI for faster retrieval. Built + for the data hoarders out there! +

+
+
+
+ + Try Demo + + + GitHub + +
+
+ ); +} + +function Platforms() { + return ( +
+

+ Apps & Extensions for Seamless Access +

+

+ Enjoy seamless access with our mobile apps and browser extensions. +

+
+ {platforms.map((platform) => ( +
+ + {platform.name} + +
+ ))} +
+
+ ); +} + +function Features() { + return ( +
+
+ {featuresList.map((feature) => ( +
+
+ +

+ {feature.title} +

+
+

{feature.description}

+
+ ))} +
+
+ ); +} + +function Footer() { + return ( +
+
© 2024-2025 karakeep.app
+
+ + Docs + + + GitHub + +
+
+ ); +} + +function Screenshots() { + return ( +
+ screenshot +
+ ); +} + +export default function Homepage() { + return ( +
+
+ + +
+ + + +
+
+ ); +} diff --git a/apps/landing/src/Privacy.tsx b/apps/landing/src/Privacy.tsx new file mode 100644 index 00000000..366a0395 --- /dev/null +++ b/apps/landing/src/Privacy.tsx @@ -0,0 +1,217 @@ +export default function PrivacyPolicy() { + return ( +
+ Hoarder - Privacy Policy + Privacy Policy +

+ This privacy policy applies to the Hoarder App app (hereby referred to + as "Application") for mobile devices that was created by + Mohamed Bassem (hereby referred to as "Service Provider") as + an Open Source service. This service is intended for use "AS + IS". +

+
+ Information Collection and Use +

+ The Application collects information when you download and use it. This + information may include information such as +

+
    +
  • Your device's Internet Protocol address (e.g. IP address)
  • +
  • + The pages of the Application that you visit, the time and date of your + visit, the time spent on those pages +
  • +
  • The time spent on the Application
  • +
  • The operating system you use on your mobile device
  • +
+

+
+

+ The Application does not gather precise information about the location + of your mobile device. +

+
+

+ The Application collects your device's location, which helps the + Service Provider determine your approximate geographical location and + make use of in below ways: +

+
    +
  • + Geolocation Services: The Service Provider utilizes location data to + provide features such as personalized content, relevant + recommendations, and location-based services. +
  • +
  • + Analytics and Improvements: Aggregated and anonymized location data + helps the Service Provider to analyze user behavior, identify + trends, and improve the overall performance and functionality of the + Application. +
  • +
  • + Third-Party Services: Periodically, the Service Provider may + transmit anonymized location data to external services. These + services assist them in enhancing the Application and optimizing + their offerings. +
  • +
+
+
+

+ The Service Provider may use the information you provided to contact you + from time to time to provide you with important information, required + notices and marketing promotions. +

+
+

+ For a better experience, while using the Application, the Service + Provider may require you to provide us with certain personally + identifiable information, including but not limited to Name,Email. The + information that the Service Provider request will be retained by them + and used as described in this privacy policy. +

+
+ Third Party Access +

+ Only aggregated, anonymized data is periodically transmitted to external + services to aid the Service Provider in improving the Application and + their service. The Service Provider may share your information with + third parties in the ways that are described in this privacy statement. +

+
+
+

+ Please note that the Application utilizes third-party services that + have their own Privacy Policy about handling data. Below are the links + to the Privacy Policy of the third-party service providers used by the + Application: +

+ +
+
+

+ The Service Provider may disclose User Provided and Automatically + Collected Information: +

+
    +
  • + as required by law, such as to comply with a subpoena, or similar + legal process; +
  • +
  • + when they believe in good faith that disclosure is necessary to + protect their rights, protect your safety or the safety of others, + investigate fraud, or respond to a government request; +
  • +
  • + with their trusted services providers who work on their behalf, do not + have an independent use of the information we disclose to them, and + have agreed to adhere to the rules set forth in this privacy + statement. +
  • +
+

+
+ Opt-Out Rights +

+ You can stop all collection of information by the Application easily by + uninstalling it. You may use the standard uninstall processes as may be + available as part of your mobile device or via the mobile application + marketplace or network. +

+
+ Data Retention Policy +

+ The Service Provider will retain User Provided data for as long as you + use the Application and for a reasonable time thereafter. If you'd + like them to delete User Provided Data that you have provided via the + Application, please contact them at me@mbassem.com and they will respond + in a reasonable time. +

+
+ Children +

+ The Service Provider does not use the Application to knowingly solicit + data from or market to children under the age of 13. +

+
+
+

+ The Application does not address anyone under the age of 13. The + Service Provider does not knowingly collect personally identifiable + information from children under 13 years of age. In the case the + Service Provider discover that a child under 13 has provided personal + information, the Service Provider will immediately delete this from + their servers. If you are a parent or guardian and you are aware that + your child has provided us with personal information, please contact + the Service Provider (me@mbassem.com) so that they will be able to + take the necessary actions. +

+
+
+ Security +

+ The Service Provider is concerned about safeguarding the confidentiality + of your information. The Service Provider provides physical, electronic, + and procedural safeguards to protect information the Service Provider + processes and maintains. +

+
+ Changes +

+ This Privacy Policy may be updated from time to time for any reason. The + Service Provider will notify you of any changes to the Privacy Policy by + updating this page with the new Privacy Policy. You are advised to + consult this Privacy Policy regularly for any changes, as continued use + is deemed approval of all changes. +

+
+

This privacy policy is effective as of 2024-03-19

+
+ Your Consent +

+ By using the Application, you are consenting to the processing of your + information as set forth in this Privacy Policy now and as amended by + us. +

+
+ Contact Us +

+ If you have any questions regarding privacy while using the Application, + or have questions about the practices, please contact the Service + Provider via email at me@mbassem.com. +

+
+

+ This privacy policy page was generated by{" "} + + App Privacy Policy Generator + +

+
+ ); +} diff --git a/apps/landing/src/main.tsx b/apps/landing/src/main.tsx new file mode 100644 index 00000000..ed52e896 --- /dev/null +++ b/apps/landing/src/main.tsx @@ -0,0 +1,9 @@ +import { StrictMode } from "react"; +import App from "@/src/App"; +import { createRoot } from "react-dom/client"; + +createRoot(document.getElementById("root")!).render( + + + , +); -- cgit v1.2.3-70-g09d2