https://github.com/datocms/datocms-astro-blog-demo
https://github.com/datocms/datocms-astro-blog-demo
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/datocms/datocms-astro-blog-demo
- Owner: datocms
- Created: 2022-06-15T09:05:32.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-02-06T08:11:35.000Z (over 1 year ago)
- Last Synced: 2025-04-04T20:51:27.243Z (about 1 year ago)
- Language: Astro
- Size: 545 KB
- Stars: 5
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
π [Visit the DatoCMS homepage](https://www.datocms.com) or see [What is DatoCMS?](#what-is-datocms)
---
# A Blog example using Astro and DatoCMS
This example showcases an Astro Blog using [DatoCMS](https://www.datocms.com/) as the data source.
The purpose of this repo is to have a quick start reference that can be set up with the "one-click" button below.
## Demo
Have a look at the end result live:
### [https://blog-astro-no-clientside-js.vercel.app/](https://blog-astro-no-clientside-js.vercel.app/)
## How to use
### Quick start
1. [Create an account on DatoCMS](https://datocms.com).
2. Make sure that you have set up the [Github integration on Vercel](https://vercel.com/docs/git/vercel-for-github).
3. Let DatoCMS set everything up for you clicking this button:
[](https://dashboard.datocms.com/projects/clone?repo=/marcelofinamorvieira/blog-astro-no-clientside-js)
### Local setup
Once the setup of the project and repo is done, clone the repo locally.
#### Set up environment variables
In your DatoCMS' project, go to the **Settings** menu at the top and click **API tokens**.
Then click **Read-only API token** and copy the token.
Next, create the `.env` with your API token (which will be ignored by Git):
```bash
echo ASTRO_EXAMPLE_CMS_DATOCMS_API_TOKEN= >> .env
```
#### Run your project locally
```bash
npm install
npm run dev
```
Your blog should be up and running on [http://localhost:3000](http://localhost:3000)!
## `client:visible` directive
Astro is ["Zero JS, by default: No JavaScript runtime overhead to slow you down"](https://docs.astro.build/en/getting-started/). That means that by default Astro generates static files server-side and no JS is sent to the client, unless strictly needed.
When using the `` component, or any other component that requires some client-side orchestration, you must instruct Astro to send the component bundle to the client, so that the interactive features can be made available to the user. Astro uses [_directives_](https://docs.astro.build/en/reference/directives-reference/#client-directives): `client:visible` loads and hydrates the component once the component has entered the userβs viewport.
In this demo, we use the `client:visible` directive to enable the lazy load of images, that are actually loaded only when they enter the viewport.
---
# What is DatoCMS?
[DatoCMS](https://www.datocms.com/) is the REST & GraphQL Headless CMS for the modern web.
Trusted by over 25,000 enterprise businesses, agencies, and individuals across the world, DatoCMS users create online content at scale from a central hub and distribute it via API. We β€οΈ our [developers](https://www.datocms.com/team/best-cms-for-developers), [content editors](https://www.datocms.com/team/content-creators) and [marketers](https://www.datocms.com/team/cms-digital-marketing)!
**Why DatoCMS?**
- **API-First Architecture**: Built for both REST and GraphQL, enabling flexible content delivery
- **Just Enough Features**: We believe in keeping things simple, and giving you [the right feature-set tools](https://www.datocms.com/features) to get the job done
- **Developer Experience**: First-class TypeScript support with powerful developer tools
**Getting Started:**
- β‘οΈ [Create Free Account](https://dashboard.datocms.com/signup) - Get started with DatoCMS in minutes
- π [Documentation](https://www.datocms.com/docs) - Comprehensive guides and API references
- βοΈ [Community Support](https://community.datocms.com/) - Get help from our team and community
- π [Changelog](https://www.datocms.com/product-updates) - Latest features and improvements
**Official Libraries:**
- [**Content Delivery Client**](https://github.com/datocms/cda-client) - TypeScript GraphQL client for content fetching
- [**REST API Clients**](https://github.com/datocms/js-rest-api-clients) - Node.js/Browser clients for content management
- [**CLI Tools**](https://github.com/datocms/cli) - Command-line utilities for schema migrations (includes [Contentful](https://github.com/datocms/cli/tree/main/packages/cli-plugin-contentful) and [WordPress](https://github.com/datocms/cli/tree/main/packages/cli-plugin-wordpress) importers)
**Official Framework Integrations**
Helpers to manage SEO, images, video and Structured Text coming from your DatoCMS projects:
- [**React Components**](https://github.com/datocms/react-datocms)
- [**Vue Components**](https://github.com/datocms/vue-datocms)
- [**Svelte Components**](https://github.com/datocms/datocms-svelte)
- [**Astro Components**](https://github.com/datocms/astro-datocms)
**Additional Resources:**
- [**Plugin Examples**](https://github.com/datocms/plugins) - Example plugins we've made that extend the editor/admin dashboard
- [**Starter Projects**](https://www.datocms.com/marketplace/starters) - Example website implementations for popular frameworks
- [**All Public Repositories**](https://github.com/orgs/datocms/repositories?q=&type=public&language=&sort=stargazers)