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:
171
src/types/api.ts
Normal file
171
src/types/api.ts
Normal 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
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user