Enhance deployment script and update package dependencies

- Added detailed labels to the deployment script for IndeedHub, including title, version, description, license, icon, and repository URL.
- Updated package dependencies in package.json and package-lock.json, including upgrading 'nostr-tools' to version 2.23.0 and adding 'axios' and '@tanstack/vue-query'.
- Improved README with a modern description of the platform and updated project structure details.

This commit enhances the clarity of the deployment process and ensures the project is using the latest dependencies for better performance and features.
This commit is contained in:
Dorian
2026-02-12 10:30:47 +00:00
parent dacfa7a822
commit c970f5b29f
43 changed files with 6906 additions and 603 deletions

171
src/types/api.ts Normal file
View File

@@ -0,0 +1,171 @@
/**
* API Types
* TypeScript interfaces matching the indeehub-api backend
*/
// Core API Models
export interface ApiProject {
id: string
name: string
title: string
slug: string
synopsis: string
status: 'draft' | 'published' | 'rejected'
type: 'film' | 'episodic' | 'music-video'
format: string
category: string
poster: string
trailer: string
rentalPrice: number
releaseDate: string
createdAt: string
updatedAt: string
genres?: ApiGenre[]
filmmaker?: ApiFilmmaker
}
export interface ApiContent {
id: string
projectId: string
seasonId?: string
title: string
synopsis: string
file: string
season?: number
order?: number
status: 'processing' | 'ready' | 'failed'
rentalPrice: number
poster?: string
trailer?: string
drmContentId?: string
drmMediaId?: string
metadata?: Record<string, any>
releaseDate?: string
isRssEnabled: boolean
createdAt: string
updatedAt: string
}
export interface ApiSeason {
id: string
projectId: string
seasonNumber: number
title: string
description: string
rentalPrice: number
isActive: boolean
contents?: ApiContent[]
}
export interface ApiUser {
id: string
email: string
legalName: string
profilePictureUrl?: string
cognitoId?: string
nostrPubkey?: string
createdAt: string
updatedAt: string
filmmaker?: ApiFilmmaker
subscriptions?: ApiSubscription[]
}
export interface ApiFilmmaker {
id: string
userId: string
professionalName: string
bio?: string
profilePictureUrl?: string
}
export interface ApiSubscription {
id: string
userId: string
tier: 'enthusiast' | 'film-buff' | 'cinephile'
status: 'active' | 'cancelled' | 'expired'
currentPeriodStart: string
currentPeriodEnd: string
cancelAtPeriodEnd: boolean
stripePriceId?: string
stripeCustomerId?: string
}
export interface ApiRent {
id: string
userId: string
contentId: string
expiresAt: string
createdAt: string
content?: ApiContent
}
export interface ApiGenre {
id: string
name: string
slug: string
}
export interface ApiFestival {
id: string
name: string
slug: string
}
export interface ApiAward {
id: string
name: string
slug: string
}
// Auth Types
export interface LoginCredentials {
email: string
password: string
}
export interface RegisterData {
email: string
password: string
legalName: string
}
export interface AuthResponse {
accessToken: string
idToken: string
refreshToken: string
expiresIn: number
}
export interface NostrSessionRequest {
pubkey: string
signature: string
event: Record<string, any>
}
export interface NostrSessionResponse {
token: string
user: ApiUser
}
// API Response Wrappers
export interface ApiResponse<T> {
data: T
message?: string
success: boolean
}
export interface PaginatedResponse<T> {
data: T[]
total: number
page: number
limit: number
hasMore: boolean
}
// Error Types
export interface ApiError {
message: string
statusCode: number
error?: string
details?: any
}

View File

@@ -14,6 +14,14 @@ export interface Content {
nostrEventId?: string
views?: number
categories: string[]
// API integration fields
slug?: string
rentalPrice?: number
status?: string
drmEnabled?: boolean
streamingUrl?: string
apiData?: any
}
// Nostr event types