User FAQs

Frequently asked questions

How do I create my first blog post?

To create your first blog post on Portal of JH:

  1. Log in to your account
  2. Click "Posts" in the navigation menu
  3. Click the "New Post" button
  4. Enter a title and write your content using Markdown
  5. Add tags to categorize your post (optional)
  6. Click "Save Post" to publish

Your post will be visible on the homepage once published!

What formatting options are available for my posts?

Portal of JH uses Markdown for post formatting. Here are the most common examples you can copy and use:

Text Formatting

**Bold text**
*Italic text*
***Bold and italic***
~~Strikethrough~~

Headers

# Heading 1
## Heading 2
### Heading 3

Links and Images

[Link text](https://example.com)
![Image alt text](https://example.com/image.jpg)

Lists

- Unordered item 1
- Unordered item 2
  - Nested item

1. Ordered item 1
2. Ordered item 2

Code

Inline `code` with backticks

```elixir
# Code block with syntax highlighting
def hello(name) do
  IO.puts("Hello, #{name}!")
end
```

Blockquotes

> This is a quote
> It can span multiple lines

Just copy these examples and modify them for your content!

How do tags work?

Tags help organize and categorize your posts. You can:

  • Create tags from the Tags page
  • Assign multiple tags to each post
  • Use tags to filter and find related posts
  • Each tag can have a custom color and description

Readers can click on tags to see all posts with that tag.

Who can see my posts?

Published posts are publicly visible to anyone visiting the site. Draft posts are only visible to you.

You have full control over:

  • When to publish (publish immediately or schedule)
  • Keeping posts as drafts
  • Editing or deleting published posts

Your profile information (display name, bio, avatar) is also publicly visible.

Can readers subscribe to my blog?

Yes! Portal of JH provides multiple subscription options:

  • RSS Feed: Subscribe to receive updates in your RSS reader
  • Atom Feed: Alternative XML feed format
  • JSON Feed: Modern JSON-based feed format

Feed links are available in the footer of every page. Each post includes reading time estimates to help you plan your reading!

How do I customize my profile?

Go to Settings to customize your profile:

  • Display Name - How you appear to readers
  • Avatar - Profile picture (upload an image)
  • Bio - Short description about yourself
  • Social Links - Bluesky and Mastodon handles
  • Website URL - Link to your personal site

Remember to click "Update Profile" to save your changes!

What are External Feeds?

External Feeds let you aggregate content from other sources into your dashboard:

  • RSS/Atom Feeds - Subscribe to any blog or news site
  • JSON Feeds - Modern feed format support
  • Bluesky - Coming soon
  • Mastodon - Coming soon

View all your feeds in one place and stay updated with content you care about.

What social media platforms are supported by the feed adapters?

The system supports 6 platforms: RSS/Atom/JSON feeds (for blogs and websites), Mastodon (Fediverse network), Bluesky (AT Protocol), YouTube (channel feeds), Twitter/X (via RSS bridges), and Instagram (via RSS bridges). Each platform has different configuration requirements - RSS needs a feed URL, while Mastodon and Bluesky need usernames.

How do I create a portfolio project?

To create a portfolio project: 1. Go to **Projects** in the navigation menu 2. Click **New Project** 3. Follow the 5-step wizard: - **Basics**: Name, description, and project type - **Metadata**: Category, date, and tags - **Team & Links**: Add collaborators and related links - **Settings**: Set visibility (public/private, portfolio) - **Content**: Add cover image and gallery photos Enable "Portfolio" in Settings to include the project in your public portfolio gallery.

How do I add an RSS feed to my feed list?

Navigate to /feeds, click "New Feed Source", select "RSS" as the feed type, enter the feed URL (e.g., https://example.com/feed.xml), give it a name, and configure the refresh interval (default 30 minutes). Click "Save" to activate the feed. The system will automatically fetch content based on your refresh interval.

How do I add, reorder, or remove photos in a project?

**Adding photos:** 1. Edit your project and go to Step 5 (Content), or click "Skip to Content" 2. Use the media picker to select images from your library **Reordering photos:** 1. Go to your project view page (/projects/:id) 2. Hover over any image to reveal control buttons 3. Click **↑** to move up or **↓** to move down **Removing photos:** 1. Hover over the image 2. Click the **X** button 3. Confirm the removal Note: Removing only removes the association - the image stays in your media library.

What is the difference between a project and a portfolio item?

All portfolio items are projects, but not all projects are in your portfolio. - **Project**: A private workspace for organizing your work with media, collaborators, and metadata - **Portfolio item**: A project marked as "Portfolio" that appears in your public portfolio gallery To add a project to your portfolio: 1. Edit the project 2. Go to Settings (Step 4) 3. Enable both "Public" and "Portfolio" This way you can have work-in-progress projects that aren't yet visible to the public.

Are project tags the same as blog post tags?

Yes! Projects and blog posts share the same tag system. - Tags you create for blog posts can be used in projects - Tags you create for projects can be used in blog posts - This helps organize all your content consistently When adding tags to a project, you can: - Search existing tags - Create new tags inline - Use public or private tags

What should I do if a feed shows an error status?

If a feed shows a red error badge, first check the error message by hovering over or clicking the status. Common issues include: invalid URL (verify the feed URL works in a browser), rate limiting (reduce refresh interval), user not found for social platforms (check username format and account visibility), or temporary server downtime. You can manually retry with the "Refresh Now" button. For persistent errors, verify the source is still active and accessible.

What is the recommended refresh interval for different feed types?

Recommended refresh intervals: Personal blogs (60-120 minutes) - they update infrequently, News feeds (15-30 minutes) - for timely updates, Social media platforms like Mastodon/Bluesky (30-60 minutes) - balances freshness with API politeness. Avoid setting intervals below 15 minutes to respect platform rate limits and reduce unnecessary load. You can always use "Refresh Now" for immediate updates when needed.

How do I add a Mastodon or Bluesky feed?

For Mastodon: Select "mastodon" as feed type and enter the full username with @ prefix and instance (e.g., @elixirlang@fosstodon.org). For Bluesky: Select "bluesky" and enter just the handle (e.g., user.bsky.social). Both use public APIs requiring no authentication, but the account must be public (not private/protected). The system will fetch the latest posts based on your configured refresh interval.

How do I set up a custom username for my profile URL?

Go to /users/settings, find the "Username" field in the profile form, and enter your desired username (3-30 characters, must start with a lowercase letter, only lowercase letters, numbers, and underscores allowed). Click "Save Changes" to activate. Your profile will then be accessible at /users/@yourusername in addition to the numeric ID URL (/users/123). The username must be unique and cannot be a reserved system word.

What are the username format requirements?

Username must be 3-30 characters long, start with a lowercase letter (a-z), and contain only lowercase letters, numbers, and underscores. No uppercase letters, hyphens, spaces, or special characters allowed. Examples of valid usernames: johndoe, alice_smith, dev123, elixir_fan. Examples of invalid: JohnDoe (uppercase), 123user (starts with number), jo (too short), john-doe (hyphen not allowed), admin (reserved word).

What happens if I change my username?

When you change your username, the new @username URL works immediately, but old @username URLs return 404 (not found). Your numeric ID URL (/users/123) continues to work. The old username becomes available for others to claim. RSS feed subscriptions using the old username will break - you'll need to share new feed URLs with subscribers. All username changes are logged with timestamp, IP address, and user agent for security. Choose usernames carefully as frequent changes confuse followers.

Can I use my username in RSS feed URLs?

Yes! Once you set a username, all feed formats support it: RSS at /users/@yourusername/rss.xml, Atom at /users/@yourusername/feed.xml, and JSON Feed at /users/@yourusername/feed.json. These URLs are more memorable and professional than numeric IDs. Share these with RSS readers like Feedly, Inoreader, NetNewsWire, or email newsletter services. Your feeds include only published posts, sorted by publication date.

How do I register for an account?

To register for an account, you need an invitation code from an existing user or administrator. Here's how:

  1. Click "Log in" in the navigation menu
  2. Click "Register" on the login page
  3. Enter your email address, choose a secure password (minimum 8 characters)
  4. Enter your invitation code in the designated field
  5. Click "Create account"

After registration, you'll receive a confirmation email. Click the link to verify your account and gain full access.

Why can't I use certain usernames like 'admin' or 'api'?

Over 30 usernames are reserved for system routes and administrative functions to prevent routing conflicts. Reserved words include: admin, api, app, auth, blog, dashboard, dev, docs, feed, feeds, help, home, login, logout, new, posts, public, register, rss, search, settings, signup, staff, static, support, system, tags, test, user, users, www. These ensure the application's core functionality remains accessible and prevents confusion between user profiles and system pages.

How do I log in to my account?

There are two ways to log in:

Standard Login (Email + Password)

  1. Click "Log in" in the navigation
  2. Enter your registered email address
  3. Enter your password
  4. Click "Log in"

Magic Link (Passwordless)

  1. On the login page, click "Sign in with email link"
  2. Enter your email address
  3. Check your inbox for the magic link email
  4. Click the link to log in instantly (valid for 15 minutes)

Tip: Enable "Remember me" to stay logged in on trusted devices.

How do I reset my password?

If you've forgotten your password:

  1. Go to the login page and click "Forgot password?"
  2. Enter your registered email address
  3. Click "Send reset instructions"
  4. Check your email for the reset link (valid for 1 hour)
  5. Click the link and enter your new password (minimum 8 characters)
  6. Confirm by entering the password again

Security note: The reset link can only be used once. For security reasons, we don't confirm whether an email exists in our system.

What is the Dashboard and what can I do there?

The Dashboard is your personal command center showing:

  • Statistics: Total posts, tags, and views at a glance
  • Recent Activity: Your latest posts and interactions
  • Quick Actions: Shortcuts to create new posts or manage tags
  • Feed Updates: Latest items from your subscribed external feeds

Access your dashboard anytime by clicking "Dashboard" in the navigation menu after logging in.

How do I create a new blog post?

Creating a blog post is simple:

  1. Click "Posts" in the navigation menu
  2. Click the "New Post" button
  3. Enter a compelling title for your post
  4. Write your content using Markdown formatting
  5. Add relevant tags to categorize your post
  6. Set a publication date (leave blank for immediate publishing)
  7. Click "Save" to publish or "Save as Draft" to continue later

Tip: Use the preview feature to see how your post will look before publishing.

What Markdown formatting is supported?

Our editor supports full GitHub Flavored Markdown with these features:

  • Headers: Use # for h1, ## for h2, etc.
  • Text styling: **bold**, *italic*, ~~strikethrough~~
  • Lists: Numbered (1. 2. 3.) and bullet points (- or *)
  • Links: [text](url) or auto-linked URLs
  • Images: ![alt text](image-url)
  • Code: Inline `code` and fenced code blocks with syntax highlighting
  • Tables: Using pipe | characters
  • Task lists: - [ ] unchecked, - [x] checked
  • Blockquotes: > for quoted text

Code blocks support syntax highlighting for Elixir, JavaScript, Python, and 100+ languages.

How do I edit or delete a post?

To edit a post:

  1. Go to "Posts" and find the post you want to edit
  2. Click the post title to view it, then click "Edit post"
  3. Or click the edit icon (pencil) directly from the post list
  4. Make your changes and click "Save"

To delete a post:

  1. Open the post you want to delete
  2. Click the "Delete" button
  3. Confirm the deletion when prompted

Warning: Deleted posts cannot be recovered. Consider unpublishing instead by clearing the publication date.

Who can see my posts?

Post visibility depends on the publication status:

  • Published posts (with a publication date): Visible to everyone, including non-logged-in visitors
  • Draft posts (no publication date): Only visible to you
  • Future-dated posts: Hidden until the publication date arrives

Published posts appear on:

  • Your public profile page (/users/@username)
  • Tag pages for any tags you've assigned
  • Site-wide search results
  • RSS/Atom/JSON feeds

How do I create and use tags?

Creating tags:

  1. Go to "Tags" in the navigation
  2. Click "New Tag"
  3. Enter a name (unique, descriptive)
  4. Optionally add a description
  5. Click "Save"

Using tags in posts:

  1. When creating or editing a post, find the "Tags" field
  2. Select existing tags from the dropdown
  3. Posts can have multiple tags

Benefits of tags:

  • Help readers find related content
  • Organize your posts by topic
  • Each tag has its own page showing all tagged posts

How do I change my email address?

To change your email address:

  1. Go to Settings → Email section
  2. Enter your new email address
  3. Enter your current password to confirm
  4. Click "Change email"
  5. Check your new email for a confirmation link
  6. Click the confirmation link to activate the new address

Important: Your old email remains active until you confirm the new one. The confirmation link expires after 1 hour.

How do I change my password?

To change your password while logged in:

  1. Go to Settings → Password section
  2. Enter your current password
  3. Enter your new password (minimum 8 characters)
  4. Confirm by entering the new password again
  5. Click "Change password"

Password requirements:

  • Minimum 8 characters
  • Mix of letters, numbers, and symbols recommended
  • Avoid common words or personal information

How can readers subscribe to my blog?

Your blog automatically provides feeds in three formats:

  • RSS:/users/@username/rss.xml
  • Atom:/users/@username/feed.xml
  • JSON Feed:/users/@username/feed.json

Readers can subscribe using any feed reader like Feedly, Inoreader, NetNewsWire, or Newsblur.

The site also provides global feeds:

  • RSS: /rss.xml
  • Atom: /feed.xml
  • JSON: /feed.json

Feed links are automatically included in your page's HTML for autodiscovery.

How do I search for content?

Use the Search feature in the navigation to find content:

  1. Click the search icon or "Search" in the menu
  2. Enter your search terms
  3. Press Enter or click Search

Search finds:

  • Blog posts (titles and content)
  • Tags (names and descriptions)
  • FAQs (questions and answers)

Tips:

  • Use multiple keywords for more specific results
  • Search is case-insensitive
  • Results are ranked by relevance

How do I upload and manage media files?

The Media Library lets you upload and organize images and files:

  1. Go to "Media" in the navigation
  2. Click "Upload" or drag files into the upload area
  3. Supported formats: JPG, PNG, GIF, WebP (images), PDF (documents)
  4. Maximum file size: 10MB per file

Organizing media:

  • Add tags to categorize your media
  • Use the search to find specific files
  • Click any item to view details and get embed URLs

Using in posts: Copy the media URL and use Markdown image syntax: ![description](url)

What are Projects and how do I use them?

Projects let you showcase your work in organized collections:

Project Types:

  • Portfolio: Showcase your best work publicly
  • Library: Organize media into private collections

Creating a project:

  1. Go to "Projects" in the navigation
  2. Click "New Project"
  3. Choose a type (Portfolio or Library)
  4. Add a title, description, and cover image
  5. Add media items to the project
  6. Set visibility (public or private)

Portfolio projects are displayed on your public profile page for visitors to browse.

How do I provide feedback about the site?

We value your feedback! Here's how to share your thoughts:

  1. Click "Feedback" in the navigation or footer
  2. Rate your overall experience (happiness meter)
  3. Share specific feedback or suggestions
  4. Optionally allow your feedback as a testimonial
  5. Submit your feedback

What we'd love to hear:

  • Features you'd like to see
  • Issues you've encountered
  • What you enjoy about the site
  • Suggestions for improvement

Your feedback helps us improve the platform for everyone!

How is my account protected?

We take security seriously. Your account is protected by:

  • Secure password hashing: Using Argon2, the industry standard
  • HTTPS encryption: All data is encrypted in transit
  • CSRF protection: Prevents cross-site request forgery
  • Rate limiting: Protects against brute-force attacks
  • Secure sessions: Auto-logout after inactivity

Best practices:

  • Use a unique, strong password
  • Don't share your login credentials
  • Log out on shared devices
  • Report any suspicious activity