ultimate-jekyll-manager
Version:
Ultimate Jekyll dependency manager
237 lines (207 loc) • 8.4 kB
Markdown
IMP
- aftet moving setup build files to defaults.js task, most default files fail be created
QUESTIONS
- how do we import theme CSS and JS into the bundles?
- how do we handle bundles for frontend and backend?
- how do we handle bundles for different themes?
- easy system for a main css, js, etc bundle BUT user can make page specific bundles
- uncompiled should move everything inside it to css/images/js/vendor
- make an update fn that will update UJ eith er in `npx uj setup` or a separate process
- we shoudl be able to MERGE site settings
- so site is default, then merge layount, then merge page (each OVERWRITING the previous one)
MIGRATIONS
- @output/build/build.json --> build.json
- there are some references inside that changed too:
- npm-build --> timestamp
- brand --> config.brand
- admin-dashboard --> config.admin-dashboard
site.time | date: '%s' --> uj_cache
uj-website-json -- uj-schema-website
facebook-pixel --> meta-pixel
INCLUDE THIS in css build process
- src/defaults/dist/_includes/master/assets/css/defaults.css
- src/defaults/dist/_includes/master/assets/css/cookieconsent.css
- social buttons too?? or make our own??
THINGS TO ADD
- auto cached translations
- sitemap for each translation?
- need to add HTML tags for each equivalent translation (not all pages have translations!!!!)
- each theme should have complex COMPONENTS to easily scaffold large parts of the site
- keep components consistent across themes so when we switch themes the components work still
- checkout pages SHOULD BE IN EACH WEBSITE
- this way, pixel events can be sent from the actual domain
-
// Legacy
// TODO: REMOVE REFERENCES TO
'npm-build': new Date().toISOString(),
brand: config.brand,
'admin-dashboard': JSON5.parse(config['admin-dashboard']),
when user is required to login (auth.required=true from UJ), pass back a query that is loginRequired=true (or something similar) so that the user can be displayed a message to login. or we can just use the fact that there is a redirect query already
automatic subprocessor list
- https://sentry.io/legal/subprocessors/
Terms of service
- https://zapier.com/legal/terms-of-service
- https://sentry.io/terms/
- https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#the-github-terms-of-service
- https://help.instagram.com/termsofuse
prechat-btn
- should have width and height set to 0px INLINE so it doesnt appear HUGE when loading
- then automatically remove the style attribute after the button is loaded
https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement/fetchPriority
- there is also one for images
- fetchpriority="high" for critical scripts and images
CONTACT
<div style="display: none;">
<input type="email" name="slap_honey" class="form-control" placeholder="Your Email">
</div>
translation:
enabled: false
default: "en"
languages:
- "en"
- "zh"
- "es"
- "hi"
- "ar"
- "pt"
- "ru"
- "ja"
- "de"
- "fr"
- "ko"
- "ur"
- "id"
- "bn"
- "tl"
- "vi"
- "it"
PRICING PRODUCT
<!-- Product -->
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{ page.gift.title }}",
"url": "{{ site.url }}{{ page.url }}",
"image": "{{ page.gift.images | first }}",
"description": "{{ page.gift.description }}",
"sku": "{{ page.gift.id }}",
"brand": {
"@type": "Brand",
"name": "{{ page.gift.brand }}"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "{{ page.gift.rating_score }}",
"reviewCount": "{{ page.gift.rating_count }}"
},
"offers": {
"@type": "Offer",
"url": "{{ site.url }}{{ page.url }}",
"priceCurrency": "USD",
"price": "{{ page.gift.price }}",
"priceValidUntil": "{{ site.time | date: '%s' | plus: 2592000 | date: '%Y-%m-%d' }}",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "{{ page.gift.brand }}"
}
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"url": "{{ site.url }}{{ page.url }}",
"name": "Free AI {{ page.subject-parameters.title }} Homework Helper",
"description": "A 24/7 free {{ page.subject-parameters.title }} homework AI tutor that instantly provides personalized step-by-step guidance, explanations, and examples for any {{ page.subject-parameters.title }} homework problem. Improve your grades with our AI homework helper!",
"applicationCategory": "EducationalApplication",
"operatingSystem": "Web-based",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"provider": {
"@type": "Organization",
"name": "{{ site.brand.name }}",
"url": "{{ site.url }}"
},
"featureList": [
"AI-powered step-by-step solutions",
"Free AI Homework Help",
"Subject-specific assistance",
"Instant answers",
"24/7 availability",
"User-friendly interface"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"ratingCount": "699422"
},
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"author": {
"@type": "Person",
"name": "Nora B"
},
"reviewBody": "{{ site.brand.name }} has been an absolute lifesaver for my homework! The AI tutor provides clear, step-by-step explanations that have helped me understand complex concepts. I love how I can get help anytime, day or night!"
}
}
</script>
MAYBE
"deploy": "UJ_BUILD_MODE=true UJ_IS_SERVER=true npx uj setup && npm run build"