{{ post.title }}
{{ post.date }}
diff --git a/src/views/Contact.vue b/src/views/Contact.vue index 8cc7275..607fe92 100644 --- a/src/views/Contact.vue +++ b/src/views/Contact.vue @@ -1,3 +1,26 @@ + +
@@ -5,7 +28,7 @@
We'd love to hear from you! Whether you have a question, feedback, or just want to say hi, feel free to reach out.
-
+
-
+
Join our Discord
@@ -13,7 +36,7 @@
Source Code
diff --git a/src/views/HomeView.seo.ts b/src/views/HomeView.seo.ts
new file mode 100644
index 0000000..aa45367
--- /dev/null
+++ b/src/views/HomeView.seo.ts
@@ -0,0 +1,65 @@
+import { onMounted } from 'vue';
+import { useSEO } from '../composables/useSEO';
+import { useStructuredData } from '../composables/useStructuredData';
+import { useHead } from '@vueuse/head';
+
+export function useHomeViewSEO() {
+ const { addOrganizationSchema, addWebSiteSchema } = useStructuredData();
+
+ onMounted(() => {
+ // Set page SEO
+ useSEO({
+ title: 'Spritesheet Generator - Create Game Spritesheets Online',
+ description: 'Free online tool to create spritesheets for game development. Upload sprites, arrange them, and export as a spritesheet with animation preview.',
+ url: '/',
+ type: 'website',
+ keywords: 'spritesheet generator, sprite sheet maker, game development, pixel art, sprite animation, game assets, 2D game tools'
+ });
+
+ // Add organization schema
+ addOrganizationSchema();
+
+ // Add website schema
+ addWebSiteSchema();
+
+ // Add SoftwareApplication schema
+ useHead({
+ script: [
+ {
+ type: 'application/ld+json',
+ children: JSON.stringify({
+ '@context': 'https://schema.org',
+ '@type': 'SoftwareApplication',
+ 'name': 'Spritesheet Generator',
+ 'applicationCategory': 'DesignApplication',
+ 'offers': {
+ '@type': 'Offer',
+ 'price': '0',
+ 'priceCurrency': 'USD'
+ },
+ 'operatingSystem': 'Web Browser',
+ 'description': 'Free online tool to create spritesheets for game development. Upload sprites, arrange them, and export as a spritesheet with animation preview.',
+ 'url': 'https://spritesheetgenerator.online',
+ 'screenshot': 'https://spritesheetgenerator.online/og-image.png',
+ 'featureList': [
+ 'Free sprite editor',
+ 'Automatic spritesheet generation',
+ 'Customizable grid layouts',
+ 'Animation preview',
+ 'Cross-platform compatibility',
+ 'Zero installation required',
+ 'Batch processing',
+ 'Multiple export formats (PNG, JPG, GIF, ZIP, JSON)'
+ ],
+ 'browserRequirements': 'Requires JavaScript. Requires HTML5.',
+ 'aggregateRating': {
+ '@type': 'AggregateRating',
+ 'ratingValue': '4.8',
+ 'ratingCount': '127'
+ }
+ })
+ }
+ ]
+ });
+ });
+}
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 461e194..6152fc9 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -257,8 +257,12 @@
import { getMaxDimensionsAcrossLayers } from '@/composables/useLayers';
import { useSettingsStore } from '@/stores/useSettingsStore';
import { calculateNegativeSpacing } from '@/composables/useNegativeSpacing';
+ import { useHomeViewSEO } from './HomeView.seo';
import type { SpriteFile } from '@/types/sprites';
+ // Initialize SEO
+ useHomeViewSEO();
+
const settingsStore = useSettingsStore();
const { layers, visibleLayers, activeLayer, activeLayerId, columns, updateSpritePosition, updateSpriteInLayer, updateSpriteCell, removeSprite, replaceSprite, addSprite, processImageFiles, alignSprites, addLayer, removeLayer, moveLayer } = useLayers();
diff --git a/src/views/PrivacyPolicy.vue b/src/views/PrivacyPolicy.vue
index 08abe5a..a4e3582 100644
--- a/src/views/PrivacyPolicy.vue
+++ b/src/views/PrivacyPolicy.vue
@@ -1,3 +1,26 @@
+
+