mirror of
https://github.com/BeardedTek/flowbite-beardedtek.com.git
synced 2025-12-06 05:31:52 +00:00
Refactor navbar and footer configuration to utilize new enable flags in .Site.Data
This commit is contained in:
124
GITEA_SETUP.md
Normal file
124
GITEA_SETUP.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Gitea Authentication Setup for BeardedTek
|
||||
|
||||
This guide will help you set up Sveltia CMS with your Gitea instance at `https://git.beardedtek.com`.
|
||||
|
||||
## ✅ Current Configuration
|
||||
|
||||
Your Sveltia CMS is now configured to use:
|
||||
- **Gitea Instance**: `https://git.beardedtek.com`
|
||||
- **Repository**: `beardedtek/flowbite-beardedtek.com`
|
||||
- **Backend**: GitLab (compatible with Gitea)
|
||||
- **API Endpoint**: `https://git.beardedtek.com/api/v1`
|
||||
- **Auth Endpoint**: `https://git.beardedtek.com/login/oauth/authorize`
|
||||
|
||||
## 🔧 Setup Steps
|
||||
|
||||
### 1. Create Gitea OAuth Application
|
||||
|
||||
1. **Login to your Gitea instance**:
|
||||
- Go to `https://git.beardedtek.com`
|
||||
- Login with your account
|
||||
|
||||
2. **Create OAuth App**:
|
||||
- Go to Settings → Applications
|
||||
- Click "Create new OAuth application"
|
||||
- Fill in the details:
|
||||
- **Application Name**: `Sveltia CMS`
|
||||
- **Redirect URIs**: `https://beardedtek.com/admin/` (or your domain)
|
||||
- **Scopes**: Select `repo` and `user:email`
|
||||
|
||||
3. **Save the credentials**:
|
||||
- Copy the **Client ID**
|
||||
- Copy the **Client Secret**
|
||||
|
||||
### 2. Environment Variables
|
||||
|
||||
Add these environment variables to your deployment:
|
||||
|
||||
```bash
|
||||
OAUTH_CLIENT_ID=your_gitea_client_id
|
||||
OAUTH_CLIENT_SECRET=your_gitea_client_secret
|
||||
```
|
||||
|
||||
### 3. Repository Access
|
||||
|
||||
Ensure your Gitea OAuth app has access to:
|
||||
- Repository: `beardedtek/flowbite-beardedtek.com`
|
||||
- Permissions: Read and write access
|
||||
|
||||
## 🚀 Testing
|
||||
|
||||
### Local Development
|
||||
1. Run `hugo server`
|
||||
2. Visit `http://localhost:1313/admin/`
|
||||
3. You should see the Gitea login option
|
||||
|
||||
### Production
|
||||
1. Deploy your site with the environment variables
|
||||
2. Visit `https://beardedtek.com/admin/`
|
||||
3. Click "Login with Gitea"
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **"Invalid redirect URI"**:
|
||||
- Make sure the redirect URI in Gitea matches your site URL exactly
|
||||
- Include the trailing slash: `https://beardedtek.com/admin/`
|
||||
|
||||
2. **"Repository not found"**:
|
||||
- Verify the repo name is correct: `beardedtek/flowbite-beardedtek.com`
|
||||
- Ensure the OAuth app has repository access
|
||||
|
||||
3. **"Authentication failed"**:
|
||||
- Check that environment variables are set correctly
|
||||
- Verify Client ID and Secret are correct
|
||||
|
||||
### Debug Steps
|
||||
|
||||
1. **Check Gitea API**:
|
||||
- Visit `https://git.beardedtek.com/api/v1/version`
|
||||
- Should return Gitea version info
|
||||
|
||||
2. **Test OAuth Flow**:
|
||||
- Try logging in manually at `https://git.beardedtek.com/login/oauth/authorize`
|
||||
- Verify your OAuth app appears in the list
|
||||
|
||||
3. **Check Repository Access**:
|
||||
- Ensure your user has write access to the repository
|
||||
- Check repository permissions in Gitea
|
||||
|
||||
## 📋 Configuration Files
|
||||
|
||||
### Main Config (`static/admin/config.yml`)
|
||||
```yaml
|
||||
backend:
|
||||
name: gitlab
|
||||
repo: beardedtek/flowbite-beardedtek.com
|
||||
branch: main
|
||||
base_url: https://git.beardedtek.com/api/v1
|
||||
auth_endpoint: https://git.beardedtek.com/login/oauth/authorize
|
||||
```
|
||||
|
||||
### Environment Variables Needed
|
||||
```bash
|
||||
OAUTH_CLIENT_ID=your_client_id_here
|
||||
OAUTH_CLIENT_SECRET=your_client_secret_here
|
||||
```
|
||||
|
||||
## 🎯 Next Steps
|
||||
|
||||
1. **Create the OAuth app** in your Gitea instance
|
||||
2. **Set environment variables** in your deployment
|
||||
3. **Test locally** with `hugo server`
|
||||
4. **Deploy to production** and test the full flow
|
||||
|
||||
## 📞 Support
|
||||
|
||||
If you encounter issues:
|
||||
1. Check the Gitea logs for authentication errors
|
||||
2. Verify all URLs and credentials are correct
|
||||
3. Test the OAuth flow manually in your browser
|
||||
4. Check that your repository exists and is accessible
|
||||
|
||||
Your Sveltia CMS is now ready to use with Gitea authentication!
|
||||
125
SVELTIA_CMS_SETUP.md
Normal file
125
SVELTIA_CMS_SETUP.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Sveltia CMS Setup for Hugo Site
|
||||
|
||||
This guide explains how to set up and use Sveltia CMS with your Hugo site.
|
||||
|
||||
## What's Been Installed
|
||||
|
||||
1. **Admin Panel**: Accessible at `/admin/` or `/admin`
|
||||
2. **Configuration**: Located at `static/admin/config.yml`
|
||||
3. **Media Uploads**: Files will be stored in `static/images/uploads/`
|
||||
4. **Netlify Identity**: Added to your site for authentication
|
||||
|
||||
## Accessing the Admin Panel
|
||||
|
||||
1. Navigate to `http://localhost:1313/admin/` (when running Hugo locally)
|
||||
2. Or visit `https://yourdomain.com/admin/` (when deployed)
|
||||
|
||||
## Collections Available
|
||||
|
||||
### Pages
|
||||
- **About Page**: Edit content at `content/about/_index.md`
|
||||
- **Contact Page**: Edit content at `content/contact/_index.md`
|
||||
- **Rates Page**: Edit content at `content/rates/_index.md`
|
||||
- **General Pages**: Create new pages in the `content/` folder
|
||||
|
||||
### Blog Posts
|
||||
- Create and manage blog posts in `content/blog/`
|
||||
- Posts will be automatically dated with the format: `YYYY-MM-DD-slug`
|
||||
|
||||
### Site Configuration
|
||||
- **Navigation**: Edit `data/navbar.yml`
|
||||
- **Footer**: Edit `data/footer.yml`
|
||||
- **Contact Data**: Edit `data/contact.yml`
|
||||
- **Rates Data**: Edit `data/rates.yml`
|
||||
- **Site Config**: Edit `config.yml`
|
||||
|
||||
## Authentication Setup
|
||||
|
||||
### Gitea OAuth (Self-hosted Git)
|
||||
This site is configured to use Gitea authentication with your instance at `https://git.beardedtek.com`:
|
||||
|
||||
1. **Create a Gitea OAuth App**:
|
||||
- Go to `https://git.beardedtek.com` → Settings → Applications
|
||||
- Create a new OAuth App
|
||||
- Set Redirect URI to `https://beardedtek.com/admin/`
|
||||
- Note your Client ID and Client Secret
|
||||
|
||||
2. **Environment Variables**:
|
||||
- Set `OAUTH_CLIENT_ID` to your Gitea OAuth Client ID
|
||||
- Set `OAUTH_CLIENT_SECRET` to your Gitea OAuth Client Secret
|
||||
|
||||
3. **Repository Access**:
|
||||
- Ensure your OAuth app has access to `beardedtek/flowbite-beardedtek.com`
|
||||
- Verify write permissions are enabled
|
||||
|
||||
### Local Development (No Authentication)
|
||||
For development or testing:
|
||||
|
||||
- The CMS is configured with `local_backend: true`
|
||||
- No authentication required for local development
|
||||
- Simply run `hugo server` and visit `/admin/`
|
||||
|
||||
## File Structure Created
|
||||
|
||||
```
|
||||
static/
|
||||
├── admin/
|
||||
│ ├── config.yml # Gitea CMS configuration
|
||||
│ └── index.html # Admin panel HTML
|
||||
└── images/
|
||||
└── uploads/ # Media uploads directory
|
||||
|
||||
content/
|
||||
└── admin/
|
||||
└── _index.md # Admin page redirect
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
### Adding New Collections
|
||||
Edit `static/admin/config.yml` to add new content types:
|
||||
|
||||
```yaml
|
||||
- name: "new_collection"
|
||||
label: "New Collection"
|
||||
folder: "content/new-section"
|
||||
create: true
|
||||
fields:
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
```
|
||||
|
||||
### Changing Media Upload Location
|
||||
Update these lines in `static/admin/config.yml`:
|
||||
|
||||
```yaml
|
||||
media_folder: "static/images/uploads"
|
||||
public_folder: "/images/uploads"
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Local Backend Issues
|
||||
If you encounter issues with the local backend:
|
||||
1. Make sure you're running Hugo locally
|
||||
2. Check that the `static/admin/` directory exists
|
||||
3. Verify the config.yml syntax is correct
|
||||
|
||||
### Authentication Issues
|
||||
1. **Gitea OAuth**: Verify your Gitea instance URL and OAuth app configuration
|
||||
2. **Local Development**: Make sure `local_backend: true` is set in config.yml
|
||||
3. **Repo Access**: Ensure your OAuth app has proper repository access permissions
|
||||
4. **Environment Variables**: Check that `OAUTH_CLIENT_ID` and `OAUTH_CLIENT_SECRET` are set correctly
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Test Locally**: Run `hugo server` and visit `/admin/`
|
||||
2. **Deploy**: Push your changes to your Git repository
|
||||
3. **Configure Netlify**: Set up Identity and deployment settings
|
||||
4. **Invite Users**: Add team members to manage content
|
||||
|
||||
## Resources
|
||||
|
||||
- [Sveltia CMS Documentation](https://github.com/sveltia/sveltia-cms)
|
||||
- [Netlify Identity Documentation](https://docs.netlify.com/visitor-access/identity/)
|
||||
- [Hugo Documentation](https://gohugo.io/documentation/)
|
||||
5
content/admin/_index.md
Normal file
5
content/admin/_index.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: "Admin"
|
||||
layout: "redirect"
|
||||
redirect: "/admin/"
|
||||
---
|
||||
112
static/admin/config.yml
Normal file
112
static/admin/config.yml
Normal file
@@ -0,0 +1,112 @@
|
||||
backend:
|
||||
name: gitlab
|
||||
repo: beardedtek/flowbite-beardedtek.com
|
||||
branch: main
|
||||
base_url: https://git.beardedtek.com/api/v1
|
||||
auth_endpoint: https://git.beardedtek.com/login/oauth/authorize
|
||||
commit_messages:
|
||||
create: 'content: create {{collection}} "{{slug}}"'
|
||||
update: 'content: update {{collection}} "{{slug}}"'
|
||||
delete: 'content: delete {{collection}} "{{slug}}"'
|
||||
uploadMedia: 'media: upload {{path}}'
|
||||
deleteMedia: 'media: delete {{path}}'
|
||||
|
||||
local_backend: true
|
||||
|
||||
media_folder: "static/images/uploads"
|
||||
public_folder: "/images/uploads"
|
||||
|
||||
collections:
|
||||
- name: "pages"
|
||||
label: "Pages"
|
||||
folder: "content"
|
||||
create: true
|
||||
slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
|
||||
fields:
|
||||
- {label: "Layout", name: "layout", widget: "hidden", default: "page"}
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Publish Date", name: "date", widget: "datetime", format: "YYYY-MM-DD", date_format: "YYYY-MM-DD", time_format: false}
|
||||
- {label: "Draft", name: "draft", widget: "boolean", default: false}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
|
||||
- name: "about"
|
||||
label: "About Page"
|
||||
file: "content/about/_index.md"
|
||||
fields:
|
||||
- {label: "Layout", name: "layout", widget: "hidden", default: "page"}
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
|
||||
- name: "contact"
|
||||
label: "Contact Page"
|
||||
file: "content/contact/_index.md"
|
||||
fields:
|
||||
- {label: "Layout", name: "layout", widget: "hidden", default: "page"}
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
|
||||
- name: "rates"
|
||||
label: "Rates Page"
|
||||
file: "content/rates/_index.md"
|
||||
fields:
|
||||
- {label: "Layout", name: "layout", widget: "hidden", default: "page"}
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
|
||||
- name: "blog"
|
||||
label: "Blog Posts"
|
||||
folder: "content/blog"
|
||||
create: true
|
||||
slug: "{{year}}-{{month}}-{{day}}-{{slug}}"
|
||||
fields:
|
||||
- {label: "Layout", name: "layout", widget: "hidden", default: "single"}
|
||||
- {label: "Title", name: "title", widget: "string"}
|
||||
- {label: "Publish Date", name: "date", widget: "datetime", format: "YYYY-MM-DD", date_format: "YYYY-MM-DD", time_format: false}
|
||||
- {label: "Draft", name: "draft", widget: "boolean", default: false}
|
||||
- {label: "Description", name: "description", widget: "text", required: false}
|
||||
- {label: "Tags", name: "tags", widget: "list", required: false}
|
||||
- {label: "Body", name: "body", widget: "markdown"}
|
||||
|
||||
- name: "navbar"
|
||||
label: "Navigation"
|
||||
file: "data/navbar.yml"
|
||||
fields:
|
||||
- {label: "Enable Navigation", name: "enable", widget: "boolean", default: true}
|
||||
|
||||
- name: "footer"
|
||||
label: "Footer"
|
||||
file: "data/footer.yml"
|
||||
fields:
|
||||
- {label: "Enable Footer", name: "enable", widget: "boolean", default: true}
|
||||
|
||||
- name: "contact_data"
|
||||
label: "Contact Data"
|
||||
file: "data/contact.yml"
|
||||
fields:
|
||||
- {label: "Contact Information", name: "contact", widget: "object", fields: [
|
||||
{label: "Email", name: "email", widget: "string"},
|
||||
{label: "Phone", name: "phone", widget: "string"},
|
||||
{label: "Address", name: "address", widget: "text"}
|
||||
]}
|
||||
|
||||
- name: "rates_data"
|
||||
label: "Rates Data"
|
||||
file: "data/rates.yml"
|
||||
fields:
|
||||
- {label: "Rates Information", name: "rates", widget: "object", fields: [
|
||||
{label: "Hourly Rate", name: "hourly", widget: "string"},
|
||||
{label: "Service Description", name: "description", widget: "text"}
|
||||
]}
|
||||
|
||||
- name: "config"
|
||||
label: "Site Configuration"
|
||||
file: "config.yml"
|
||||
fields:
|
||||
- {label: "Site Title", name: "title", widget: "string"}
|
||||
- {label: "Base URL", name: "baseURL", widget: "string"}
|
||||
- {label: "Language Code", name: "languageCode", widget: "string"}
|
||||
- {label: "Parameters", name: "params", widget: "object", fields: [
|
||||
{label: "Authors", name: "authors", widget: "string"},
|
||||
{label: "Homepage", name: "homepage", widget: "string"},
|
||||
{label: "Social Image Path", name: "social_image_path", widget: "string"}
|
||||
]}
|
||||
16
static/admin/index.html
Normal file
16
static/admin/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Content Manager</title>
|
||||
</head>
|
||||
<body>
|
||||
<script src="https://unpkg.com/sveltia-cms@0.92.0/dist/sveltia-cms.js"></script>
|
||||
<script>
|
||||
SveltiaCMS.init({
|
||||
config: '/admin/config.yml'
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user