seo optimization

This commit is contained in:
MuslemRahimi 2025-02-10 12:24:26 +01:00
parent b2c9a34ade
commit 6b67e98a10
24 changed files with 134 additions and 739 deletions

View File

@ -70,20 +70,14 @@
insider: "/insider",
options: "/options",
dividends: "/dividends",
statistics: "/statistics",
metrics: "metrics",
forecast: "/forecast",
financials: "/financials",
holdings: "/holdings",
history: "/history",
profile: "/profile",
};
if (state !== "overview" && sectionMap[state]) {
displaySection = state;
//goto(`/etf/${$etfTicker}${sectionMap[state]}`);
} else {
displaySection = "overview";
//goto(`/etf/${$etfTicker}/`);
}
}
@ -342,7 +336,6 @@
const sectionMap = {
holdings: "holdings",
options: "options",
options: "options",
insider: "insider",
dividends: "dividends",
history: "history",
@ -380,7 +373,9 @@
class="flex-1 flex-shrink-0 flex flex-row items-center justify-between -mt-2"
>
<a
href={/^\/(stocks|etf|index)/.test($previousPage || "") ? "/" : $previousPage || "/"}
href={/^\/(stocks|etf|index)/.test($previousPage || "")
? "/"
: $previousPage || "/"}
>
<svg
class="w-5 h-5 inline-block"

View File

@ -1,6 +1,5 @@
<script lang="ts">
import { etfTicker } from "$lib/store";
import ArrowLogo from "lucide-svelte/icons/move-up-right";
import { formatDate } from "$lib/utils";
export let data;
@ -14,14 +13,14 @@
<div
class="relative flex justify-center items-start overflow-hidden w-full"
>
<main class="w-full lg:w-3/4">
<main class="w-full lg:w-3/4 lg:pr-10">
<slot />
</main>
<aside class="hidden lg:block relative fixed w-1/4 ml-4">
<aside class="hidden lg:block relative fixed w-1/4 mt-3">
{#if newsList?.length !== 0}
<div
class="w-full sm:hover:text-white text-white border border-gray-600 bg-primary rounded-md h-fit pb-4 mt-4 cursor-pointer"
class="w-full sm:hover:text-white text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-inherit"
>
<div class="p-4 text-sm">
<h3 class="text-lg text-white font-semibold mb-3">

View File

@ -12,6 +12,7 @@
import { GridComponent, TooltipComponent } from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
import Infobox from "$lib/components/Infobox.svelte";
import SEO from "$lib/components/SEO.svelte";
use([LineChart, BarChart, TooltipComponent, GridComponent, CanvasRenderer]);
@ -173,43 +174,10 @@
const htmlOutput = generateDividendInfoHTML();
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$etfTicker}) Dividend History, Dates & Yield ·
stocknear
</title>
<meta
name="description"
content={`Get the latest dividend data for ${$displayCompanyName} (${$etfTicker}) stock price quote with breaking news, financials, statistics, charts and more.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · Stocknear`}
/>
<meta
property="og:description"
content={`Get the latest dividend data for ${$displayCompanyName} (${$etfTicker}), including dividend history, yield, key dates, growth and other metrics.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get the latest dividend data for ${$displayCompanyName} (${$etfTicker}) stock price quote with breaking news, financials, statistics, charts and more.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$etfTicker}) Dividend History, Dates & Yield`}
description={`Get the latest dividend data for ${$displayCompanyName} (${$etfTicker}) stock price quote with breaking news, financials, statistics, charts and more.`}
/>
<section class="w-full bg-default overflow-hidden text-white h-full">
<div class="w-full flex h-full overflow-hidden">

View File

@ -1,85 +0,0 @@
<script lang="ts">
import { stockTicker, screenWidth } from "$lib/store";
import { onDestroy } from "svelte";
import { page } from "$app/stores";
let displaySubSection = "overview";
if (displaySubSection) {
const parts = $page?.url?.pathname.split("/");
const sectionMap = {
overview: "overview",
ai: "ai",
analyst: "analyst",
};
const foundSection = parts?.find((part) =>
Object?.values(sectionMap)?.includes(part),
);
displaySubSection =
Object?.keys(sectionMap)?.find(
(key) => sectionMap[key] === foundSection,
) || "overview";
}
function changeSubSection(state) {
const subSectionMap = {
overview: "/forecast",
ai: "/forecast/ai",
analyst: "/forecast/analyst",
};
if (state !== "overview" && subSectionMap[state]) {
displaySubSection = state;
//goto(`/stocks/${$stockTicker}${subSectionMap[state]}`);
} else {
displaySubSection = state;
//goto(`/stocks/${$stockTicker}/stats`);
}
}
const unsubscribe = page.subscribe(($page) => {
const splitRoute = $page.url.pathname.split("/");
const routeState =
splitRoute[splitRoute.length - 1] !== "forecast"
? splitRoute[splitRoute.length - 1]
: "overview";
changeSubSection(routeState);
});
onDestroy(() => {
unsubscribe();
});
</script>
<section
class="w-auto max-w-5xl bg-default overflow-hidden text-black h-full mb-40"
>
<div class="m-auto h-full overflow-hidden">
<slot />
</div>
</section>
<style>
.scrollbar {
display: grid;
grid-gap: 18px;
grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
grid-auto-flow: column;
overflow-x: auto;
scrollbar-width: thin; /* Hide the default scrollbar in Firefox */
scrollbar-color: transparent transparent; /* Hide the default scrollbar in Firefox */
}
/* Custom scrollbar for Webkit (Chrome, Safari) */
.scrollbar::-webkit-scrollbar {
width: 0; /* Hide the width of the scrollbar */
height: 0; /* Hide the height of the scrollbar */
}
.scrollbar::-webkit-scrollbar-thumb {
background: transparent; /* Make the thumb transparent */
}
</style>

View File

@ -1,54 +0,0 @@
export const load = async ({ locals, params }) => {
const { apiURL, apiKey } = locals;
const postData = {
ticker: params.tickerID,
};
const getAnalystInsight = async () => {
const response = await fetch(apiURL + "/analyst-insight", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": apiKey,
},
body: JSON.stringify(postData),
});
const output = await response.json();
return output;
};
const getPriceAnalysis = async () => {
const response = await fetch(apiURL + "/price-analysis", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": apiKey,
},
body: JSON.stringify(postData),
});
const output = await response.json();
return output;
};
const getSentimentAnalysis = async () => {
const response = await fetch(apiURL + "/sentiment-analysis", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": apiKey,
},
body: JSON.stringify(postData),
});
const output = await response.json();
return output;
};
// Make sure to return a promise
return {
getAnalystInsight: await getAnalystInsight(),
getPriceAnalysis: await getPriceAnalysis(),
getSentimentAnalysis: await getSentimentAnalysis(),
};
};

View File

@ -1,100 +0,0 @@
<script lang="ts">
import {
numberOfUnreadNotification,
displayCompanyName,
stockTicker,
sentimentComponent,
priceAnalysisComponent,
} from "$lib/store";
import PriceAnalysis from "$lib/components/PriceAnalysis.svelte";
import SentimentAnalysis from "$lib/components/SentimentAnalysis.svelte";
import AnalystInsight from "$lib/components/AnalystInsight.svelte";
import Lazy from "$lib/components/Lazy.svelte";
export let data;
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$stockTicker}) Forecast AI · Stocknear
</title>
<meta
name="description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
/>
<meta
property="og:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$stockTicker}) Forecast AI · Stocknear`}
/>
<meta
name="twitter:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<section
class="bg-default overflow-hidden text-white h-full mb-40 sm:mb-0 w-full"
>
<div class="flex justify-center m-auto h-full overflow-hidden w-full">
<div
class="relative flex justify-center items-center overflow-hidden w-full"
>
<div class="sm:pl-7 sm:pb-7 sm:pt-7 w-full m-auto mt-2 sm:mt-0">
<Lazy>
<div
class="w-full mt-10 sm:mt-0 m-auto sm:pt-6 {Object?.keys(
data?.getAnalystInsight,
)?.length === 0
? 'hidden'
: ''}"
>
<AnalystInsight {data} />
</div>
</Lazy>
<Lazy>
<div
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {Object?.keys(
data?.getPriceAnalysis,
)?.length === 0
? 'hidden'
: ''}"
>
<PriceAnalysis {data} />
</div>
</Lazy>
<Lazy>
<div
class="w-full mt-10 sm:mt-5 m-auto sm:pb-6 sm:pt-6 {data
?.getSentimentAnalysis?.length === 0
? 'hidden'
: ''}"
>
<SentimentAnalysis {data} />
</div>
</Lazy>
</div>
</div>
</div>
</section>

View File

@ -10,6 +10,7 @@
import { Button } from "$lib/components/shadcn/button/index.js";
import { goto } from "$app/navigation";
import ArrowLogo from "lucide-svelte/icons/move-up-right";
import SEO from "$lib/components/SEO.svelte";
import { onMount } from "svelte";
@ -272,42 +273,10 @@
}
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$etfTicker}) Historical Stock Price Data · Stocknear
</title>
<meta
name="description"
content={`Get a complete stock price history for ${$etfTicker}, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$etfTicker}) Historical Stock Price Data · Stocknear`}
/>
<meta
property="og:description"
content={`Get a complete stock price history for NVIDIA, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$etfTicker}) Historical Stock Price Data · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get a complete stock price history for NVIDIA, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$etfTicker}) Stock Price History`}
description={`Get a complete stock price history for ${$displayCompanyName} (${$etfTicker}), starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<section
class="bg-default overflow-hidden text-white h-full min-h-screen mb-20 sm:mb-0 w-full mt-2 sm:mt-0"

View File

@ -7,6 +7,7 @@
import { formatString } from "$lib/utils";
import Table from "$lib/components/Table/Table.svelte";
import Infobox from "$lib/components/Infobox.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
let rawData = data?.getETFHoldings?.holdings || [];
@ -57,42 +58,10 @@
let htmlOutput = generateStatementInfoHTML();
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$etfTicker}) Holdings List · Stocknear
</title>
<meta
name="description"
content={`Get the Holdings List of ${$displayCompanyName} (${$etfTicker}).`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · Stocknear`}
/>
<meta
property="og:description"
content={`Get the Holdings List of ${$displayCompanyName} (${$etfTicker}).`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$etfTicker}) Holdings List · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get the Holdings List of ${$displayCompanyName} (${$etfTicker}).`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$etfTicker}) Holdings List`}
description={`Get the Holdings List of ${$displayCompanyName} (${$etfTicker}).`}
/>
<section
class="bg-default overflow-hidden text-white h-full min-h-screen mb-20 sm:mb-0 w-full mt-2 sm:mt-0"

View File

@ -14,14 +14,14 @@
<div
class="relative flex justify-center items-start overflow-hidden w-full"
>
<main class="w-full lg:w-3/4">
<main class="w-full lg:w-3/4 lg:pr-10">
<slot />
</main>
<aside class="hidden lg:block relative fixed w-1/4 ml-4">
<aside class="hidden lg:block relative fixed w-1/4 mt-3">
{#if newsList?.length !== 0}
<div
class="w-full sm:hover:text-white text-white border border-gray-600 bg-primary rounded-md h-fit pb-4 mt-4 cursor-pointer"
class="w-full sm:hover:text-white text-white border border-gray-600 rounded-md h-fit pb-4 mt-4 cursor-pointer bg-inherit"
>
<div class="p-4 text-sm">
<h3 class="text-lg text-white font-semibold mb-3">

View File

@ -7,6 +7,7 @@
} from "$lib/store";
import { getPartyForPoliticians } from "$lib/utils";
import TableHeader from "$lib/components/Table/TableHeader.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
@ -183,43 +184,10 @@
};
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$etfTicker}) US Congress & Senate Trading ·
stocknear
</title>
<meta
name="description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$etfTicker}) from democrates and republicans.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · Stocknear`}
/>
<meta
property="og:description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$etfTicker}) from democrates and republicans.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$etfTicker}) from democrates and republicans.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$etfTicker}) US Congress & Senate Trading`}
description={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$etfTicker}) from democrates and republicans.`}
/>
<section
class="w-full bg-default overflow-hidden min-h-screen text-white h-full"
@ -243,7 +211,7 @@
>
<!--Start Buy/Sell-->
<div
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-4 border border-gray-600 bg-primary rounded-md h-20"
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-4 border border-gray-600 rounded h-20"
>
<div class="flex flex-col items-start">
<span
@ -305,7 +273,7 @@
<!--End Buy/Sell-->
<!--Start Dem/Rep-->
<div
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-4 border border-gray-600 bg-primary rounded-md h-20"
class="flex flex-row items-center flex-wrap w-full px-3 sm:px-4 border border-gray-600 rounded h-20"
>
<div class="flex flex-col items-start">
<span
@ -368,10 +336,10 @@
<!--End Widget-->
<div
class="mt-6 flex justify-start items-center w-full m-auto rounded-none sm:rounded-md mb-4 overflow-x-scroll"
class="mt-6 flex justify-start items-center w-full m-auto rounded-none sm:rounded mb-4 overflow-x-scroll"
>
<table
class="table table-sm sm:table-md table-compact rounded-none sm:rounded-md w-full bg-table border border-gray-800 m-auto"
class="table table-sm sm:table-md table-compact rounded-none sm:rounded w-full bg-table border border-gray-800 m-auto"
>
<thead>
<TableHeader {columns} {sortOrders} {sortData} />
@ -475,7 +443,7 @@
<div class="flex justify-center items-center h-80">
<div class="relative">
<label
class="bg-secondary rounded-md h-14 w-14 flex justify-center items-center absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
class="bg-secondary rounded h-14 w-14 flex justify-center items-center absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2"
>
<span class="loading loading-spinner loading-md text-gray-400"
></span>

View File

@ -5,6 +5,8 @@
import TableHeader from "$lib/components/Table/TableHeader.svelte";
import Infobox from "$lib/components/Infobox.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
let etfProviderList = data?.getAllETFProviders;
@ -83,42 +85,10 @@
};
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Largest
ETF Providers by Assets Under Management · Stocknear
</title>
<meta
name="description"
content={`A complete list of all the companies that provide exchange-traded funds (ETFs) that are actively traded on the U.S. stock market.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`Largest ETF Providers by Assets Under Management · Stocknear`}
/>
<meta
property="og:description"
content={`A complete list of all the companies that provide exchange-traded funds (ETFs) that are actively traded on the U.S. stock market.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`Largest ETF Providers by Assets Under Management · Stocknear`}
/>
<meta
name="twitter:description"
content={`A complete list of all the companies that provide exchange-traded funds (ETFs) that are actively traded on the U.S. stock market.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title="Largest ETF Providers by Assets Under Management"
description="A complete list of all the companies that provide exchange-traded funds (ETFs) that are actively traded on the U.S. stock market."
/>
<section class="w-full overflow-hidden m-auto">
<Infobox

View File

@ -6,6 +6,7 @@
import TableHeader from "$lib/components/Table/TableHeader.svelte";
import HoverStockChart from "$lib/components/HoverStockChart.svelte";
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
let rawData = data?.getETFProviderData;
@ -133,34 +134,10 @@
let htmlOutput = generateStatementInfoHTML();
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{etfProviderData?.length}
{etfProviderName} ETFs - A Complete List · Stocknear
</title>
<meta name="description" content={``} />
<!-- Other meta tags -->
<meta
property="og:title"
content={`${etfProviderName} (${etfProviderData?.length}) ETFs - A Complete List`}
/>
<meta property="og:description" content={``} />
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${etfProviderName} (${etfProviderData?.length}) ETFs - A Complete List`}
/>
<meta name="twitter:description" content={``} />
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${etfProviderName} ETF List: Complete Guide to ${etfProviderData?.length} Exchange Traded Funds`}
description={`Explore ${etfProviderName}'s complete ETF lineup of ${etfProviderData?.length} funds with $${abbreviateNumber(totalAssets)} AUM. Compare expense ratios, assets, and performance metrics to find the right ETF for your portfolio.`}
/>
<section class="w-full overflow-hidden m-auto">
{#if rawData?.length !== 0}

View File

@ -3,6 +3,7 @@
import { abbreviateNumber } from "$lib/utils";
import ArrowLogo from "lucide-svelte/icons/move-up-right";
import TableHeader from "$lib/components/Table/TableHeader.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
@ -85,36 +86,10 @@
};
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} 100
Newest ETFs · Stocknear
</title>
<meta
name="description"
content={`A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date.`}
/>
<!-- Other meta tags -->
<meta property="og:title" content={`100 Newest ETFs · Stocknear`} />
<meta
property="og:description"
content={`A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={`100 Newest ETFs · Stocknear`} />
<meta
name="twitter:description"
content={`A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title="New Launches of ETFs"
description="A list of the 100 most recently launched ETFs on the US stock market, sorted by the inception date."
/>
<section
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden pb-20 pt-5 px-4 lg:px-3"

View File

@ -44,12 +44,6 @@
}
</script>
<!-- HEADER FOR BETTER SEO -->
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
</svelte:head>
<section
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden pb-20 pt-5 px-4 lg:px-3"
>

View File

@ -1,11 +1,6 @@
<script lang="ts">
import notifySound from "$lib/audio/options-flow-reader.mp3";
import {
numberOfUnreadNotification,
getCache,
setCache,
isOpen,
} from "$lib/store";
import { getCache, setCache, isOpen } from "$lib/store";
import { cn } from "$lib/utils";
import { onMount, onDestroy } from "svelte";
@ -17,6 +12,7 @@
import { Calendar } from "$lib/components/shadcn/calendar/index.js";
import CalendarIcon from "lucide-svelte/icons/calendar";
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
import SEO from "$lib/components/SEO.svelte";
import { page } from "$app/stores";
@ -826,37 +822,10 @@
}
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Options
Flow Feed · Stocknear
</title>
<meta
name="description"
content={`Explore unusual options from big institutional traders and hedge funds.`}
/>
<!-- Other meta tags -->
<meta property="og:title" content={`Options Flow Feed · Stocknear`} />
<meta
property="og:description"
content={`Explore unusual options from big institutional traders and hedge funds.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={`Options Flow Feed · Stocknear`} />
<meta
name="twitter:description"
content={`Explore unusual options from big institutional traders and hedge funds.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title="Options Flow Feed"
description="Explore unusual options from big institutional traders and hedge funds."
/>
<body class="overflow-y-auto">
<section

View File

@ -77,6 +77,13 @@
let activeIdx = 0;
let subActiveIdx = 0;
let expandedDescriptions: { [key: string]: boolean } = {};
function truncateText(text: string, maxLength: number = 250) {
if (text.length <= maxLength) return text;
return text.slice(0, maxLength) + "...";
}
function plotData() {
const history = data?.getEggPrice?.history || [];
const dateList = history.map((item) => item?.date ?? null);
@ -424,7 +431,10 @@
</div>
<span class="text-sm sm:text-[1rem] text-gray-400">
{item.time_formatted} {item.location !== null ? `- ${item?.location}` : ''}
{item.time_formatted}
{item.location !== null
? `- ${item?.location}`
: ""}
</span>
</div>
@ -459,7 +469,9 @@
<br />
{#each items as item, indexB}
<div class="flex flex-col items-start space-y-1 mb-6">
<div
class="flex flex-col items-start space-y-1 mb-6 border-b border-gray-800 pb-4"
>
<div class="flex flex-row items-center space-x-2">
<div class="relative">
<svg
@ -520,9 +532,25 @@
{item?.sentiment}
</div>
<span class="text-[1rem] ml-7 pt-2"
>{item.description}</span
>
<span class="text-[1rem] ml-7 pt-2">
{#if item.description.length > 150}
{expandedDescriptions[item.title]
? item.description
: truncateText(item.description)}
<button
on:click={() =>
(expandedDescriptions[item.title] =
!expandedDescriptions[item.title])}
class="text-blue-400 hover:text-blue-300 ml-1 font-medium"
>
{expandedDescriptions[item.title]
? "Read less"
: "Read more"}
</button>
{:else}
{item.description}
{/if}
</span>
<a
href={item?.link}

View File

@ -4,7 +4,10 @@
const emailAddress = "support@stocknear.com";
</script>
<SEO title="Privacy Policiy" description="" />
<SEO
title="Privacy Policy"
description="Learn about how Stocknear protects your privacy and handles your data. Our comprehensive privacy policy outlines our commitment to data security and transparency."
/>
<section
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden pb-20 pt-5 px-4 lg:px-3"

View File

@ -18,6 +18,7 @@
import { GridComponent, TooltipComponent } from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
import ArrowLogo from "lucide-svelte/icons/move-up-right";
import SEO from "$lib/components/SEO.svelte";
use([LineChart, BarChart, GridComponent, TooltipComponent, CanvasRenderer]);
@ -256,36 +257,12 @@
}
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} Wallstreetbets
Tracker · Stocknear
</title>
<meta
name="description"
content={`Track the stocks and discussion of Wallstreetbets in realtime.`}
/>
<!-- Other meta tags -->
<meta property="og:title" content={`Wallstreetbets Tracker · Stocknear`} />
<meta
property="og:description"
content={`Track the stocks and discussion of Wallstreetbets in realtime.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={`Wallstreetbets Tracker · Stocknear`} />
<meta
name="twitter:description"
content={`Track the stocks and discussion of Wallstreetbets in realtime.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title="Reddit Stock Tracker - WSB Analytics & Insights"
description="Track WallStreetBets stock discussions and trends in real-time. Get detailed analytics, sentiment analysis, and trading insights from Reddit's largest stock community."
/>
<section
class="w-full max-w-3xl sm:max-w-[1400px] overflow-hidden min-h-screen pb-20 pt-5 px-4 lg:px-3"

View File

@ -1,7 +1,7 @@
<script>
import { enhance } from "$app/forms";
import Input from "$lib/components/Input.svelte";
import SEO from "$lib/components/SEO.svelte";
import toast from "svelte-french-toast";
export let form;
@ -57,16 +57,12 @@
}
</script>
<!-- HEADER FOR BETTER SEO -->
<svelte:head>
<meta charset="utf-8" />
<title>Sign Up · Stocknear</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta
name="description"
content="Sign Up to stocknear to become part of the largest trading community in the world."
/>
</svelte:head>
<SEO
title="Sign Up"
description="Sign Up to Stocknear to become part of the largest trading community in the world."
/>
<div
class="relative w-full max-w-3xl mx-auto min-h-screen pb-40 sm:mt-10 {oauthLoading

View File

@ -2,6 +2,7 @@
import toast from "svelte-french-toast";
import { pb } from "$lib/pocketbase";
import { goto } from "$app/navigation";
import SEO from "$lib/components/SEO.svelte";
let loading = false;
let email: String;
@ -27,16 +28,12 @@
</script>
<!-- HEADER FOR BETTER SEO -->
<svelte:head>
<meta charset="utf-8" />
<title>Reset Password · Stocknear</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta
name="description"
content="Reset your password to sign in to your stocknear account."
/>
</svelte:head>
<SEO
title="Reset Password"
description="Reset your password to sign in to your Stocknear account."
/>
<div
class="flex flex-col items-center min-h-screen w-full max-w-3xl m-auto mt-40"

View File

@ -13,6 +13,7 @@
import { LineChart, BarChart, GaugeChart } from "echarts/charts";
import { GridComponent, TooltipComponent } from "echarts/components";
import { CanvasRenderer } from "echarts/renderers";
import SEO from "$lib/components/SEO.svelte";
export let data;
use([
@ -451,42 +452,12 @@
}
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$stockTicker}) Forecast Overview · Stocknear
</title>
<meta
name="description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · Stocknear`}
/>
<meta
property="og:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · Stocknear`}
/>
<meta
name="twitter:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$stockTicker}) Forecast Overview · Stocknear`}
description={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<section class="w-full bg-default overflow-hidden text-white h-full">
<div class="w-full flex h-full overflow-hidden">

View File

@ -10,6 +10,7 @@
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
import { goto } from "$app/navigation";
import Infobox from "$lib/components/Infobox.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
let analystRating = data?.getAnalystRating ?? {};
@ -194,42 +195,13 @@
$: charNumber = $screenWidth < 640 ? 20 : 30;
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$stockTicker}) Analyst Ratings · Stocknear
</title>
<meta
name="description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · Stocknear`}
/>
<meta
property="og:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · Stocknear`}
/>
<meta
name="twitter:description"
content={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$stockTicker}) Analyst Ratings · Stocknear`}
description={`A list of analyst ratings for Advanced Micro Devices (AMD) stock. See upgrades, downgrades, price targets and more from top Wall Street stock analysts.`}
/>
<section
class="bg-default overflow-hidden text-white h-full min-h-screen mb-40 sm:mb-0 w-full"

View File

@ -10,7 +10,7 @@
import { Button } from "$lib/components/shadcn/button/index.js";
import { goto } from "$app/navigation";
import ArrowLogo from "lucide-svelte/icons/move-up-right";
import SEO from "$lib/components/SEO.svelte";
import { onMount } from "svelte";
export let data;
@ -269,43 +269,12 @@
}
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$stockTicker}) Historical Stock Price Data ·
Stocknear
</title>
<meta
name="description"
content={`Get a complete stock price history for ${$stockTicker}, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$stockTicker}) Historical Stock Price Data · Stocknear`}
/>
<meta
property="og:description"
content={`Get a complete stock price history for NVIDIA, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$stockTicker}) Historical Stock Price Data · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get a complete stock price history for NVIDIA, starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$stockTicker}) Stock Price History · Stocknear`}
description={`Get a complete stock price history for ${$displayCompanyName} (${$stockTicker}), starting from its first trading day. Includes open, high, low, close and volume.`}
/>
<section
class="bg-default overflow-hidden text-white h-full min-h-screen mb-20 sm:mb-0 w-full mt-2 sm:mt-0"

View File

@ -9,7 +9,7 @@
import TableHeader from "$lib/components/Table/TableHeader.svelte";
import UpgradeToPro from "$lib/components/UpgradeToPro.svelte";
import Infobox from "$lib/components/Infobox.svelte";
import SEO from "$lib/components/SEO.svelte";
export let data;
let rawData = data?.getSenateTrading;
@ -179,43 +179,11 @@
};
</script>
<svelte:head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>
{$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""}
{$displayCompanyName} ({$stockTicker}) US Congress & Senate Trading ·
stocknear
</title>
<meta
name="description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$stockTicker}) from democrates and republicans.`}
/>
<!-- Other meta tags -->
<meta
property="og:title"
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
/>
<meta
property="og:description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$stockTicker}) from democrates and republicans.`}
/>
<meta property="og:type" content="website" />
<!-- Add more Open Graph meta tags as needed -->
<!-- Twitter specific meta tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
/>
<meta
name="twitter:description"
content={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$stockTicker}) from democrates and republicans.`}
/>
<!-- Add more Twitter meta tags as needed -->
</svelte:head>
<SEO
title={`${$displayCompanyName} (${$stockTicker}) US Congress & Senate Trading · Stocknear`}
description={`Get the latest US congress & senate trading of ${$displayCompanyName} (${$stockTicker}) from democrates and republicans.`}
/>
<section
class="w-full bg-default overflow-hidden min-h-screen text-white h-full"