API Documentation

Complete reference for the Projects API endpoints, parameters, and responses.

Introduction

This API provides read-only access to my portfolio projects data. It is backed by Appwrite, served through a secure gateway, and optimized with edge caching for fast, reliable access across all ishav.space properties.


Endpoints

GEThttps://projects.ishav.space/api/projects

Returns a list of all published projects, ordered by priority. Data is cached at the edge and automatically updated via Appwrite webhooks.

Response

Response
{
  "success": true,
  "projects": [
    {
      "id": "project-id",
      "title": "Project Title",
      "description": "Project description",
      "image": "https://cloud.appwrite.io/v1/storage/buckets/{bucketId}/files/{fileId}/view?project={projectId}",
      "tags": ["nextjs", "reactjs", "tailwind"],
      "demoLink": "https://demo.example.com",
      "codeLink": "https://github.com/username/repo",
      "featured": true
    }
  ]
}

Cross-Origin Resource Sharing

This API supports CORS for the root domain ishav.spaceand all of its subdomains. Requests from unrelated domains are not allowed.


Rate Limiting

Requests are limited per IP to prevent abuse. Excessive requests may receive a429 Too Many Requests response.

Example Usage

TypeScript
interface Project {
  id: string;
  title: string;
  description: string;
  image: string; // Appwrite Storage URL
  tags: string[];
  demoLink: string;
  codeLink?: string;
  featured?: boolean;
}

interface ApiResponse {
  success: boolean;
  projects: Project[];
}

fetch("https://projects.ishav.space/api/projects")
  .then((res) => res.json())
  .then((data: ApiResponse) => {
    console.log(data.projects);
  });

Need more help?

If you have any questions or need further assistance with the API, feel free to reach out.

Contact Me