To Do:

Immersive Light Field Video with a Layered Mesh Representation

About Lander Gallery

About This Doc

Gallery Versions so far

1.0 Upload Images, Access with Search & Tagging, Download ready-for-web.

2.0 Multiple Contributors & Search Suggestions

3.0 Dark Mode, Map Search, Instant Results

4.0 Video & Filtering by Tag / Photographer

5.0 Collection Views, Placements & Social Media Integration, Agency Accounts

Overview & App Specification

classDiagram
class TypesOfCollectionView {
    + Home
    + NamedCollections
    + NestedNamedCollectionsAndSearchResultswithCollectionsinthem
    + SearchAndFilterResults
    + DetailView
}
class Home {
    + Same breakdown as favorited
    + Recently
        + Nested date filter here
    + In Your Location
        + Nested location filter here
}
class NamedCollections {
    + CollectionTitle
    + Description
    + Tags
}
class NestedNamedCollectionsAndSearchResultswithCollectionsinthem {
    + Dropdowntoselectfromnestedcollections
    + Otherthanthathomeisjustaglorifiedbigunnamedcollection/searchview
    + Clickonatagonthehomepage
    + Suggestedtagsshowupinthesidebarwhenyouscrolldown
}
class SearchAndFilterResults {
    + Searchtermshowsascollectiontitle
    + CreateCollectionButton
    + And/OrtogglesforfiltersAndsearchresults
    + SearchtimeAndresultnumbers
}
class DetailView {
    + Zooms-Insospeak
    + File
    + Description
    + Location
    + Tags
    + DownloadButton
    + ShareLink
    + ShowCollectionsButton
    + OtherAngleButton
    + RelatedButton
}

classDiagram
    class Excludes_Includes_newsearches{
        + side bar
        + ads
        + removes content
    }
    class Search_controls{
        + side bar
    }
    class Sort_Bar{
        + top of collection grid
        + near title of collection
    }
    class Sorts_view_Settings{
        + top heading section of page
        + subsearch
        + resorts content
    }
    class Date_Made{
        + Oldest
        + Newest
        + Closest to given date
    }
    class Location{
        + Nearest
        + Farthest
        + From me or from given address
    }
    class Creator_Or_Camera{
        + Multiselect specific creators
        + Multiselect camera/device types
    }
    class Tag_Description_Subsearch{
        + MultiSelect tags
        + Multiselect your own saved search terms
    }
    class Popularity{
        + Favorited
            + By you
            + By creator/uploader
            + By your team
            + By everyone
        + Downloaded/Used
            + Same breakdown as favorited
            + Recently
            + In Your Location
        + Viewed/Opened
            + Same breakdown
    }
    class Season{
        + User Current Season By Default
        + Option to Pick Your Own Season
    }
    class Genre_Tagged_by_AI{
        + Popular Stock Imagery type categories
            + AnglePerspective
                + Aerial
                + On Foot
                + Unique/Macro
            + Plants
                + Landscape
                + Park
            + People
                + By Group size
                    + Portrait
                    + Group
                    + Event
                    + Public
                + By Type
                    + Professional
                    + Outdoors
                    + Social
            + Buildings
                + Facade
                + Skyline
            + Infrastructure
                + Automotive
                + Road
                + Plane
                + Airport
                + Bridge
            + Etc.
    }
    class Types_of_Collection_View{
        + Home
            + Dropdown to select from nested collections
            + Suggested tags show up in the sidebar when you scroll down
        + Named Collections
            + Collection Title
            + Description
            + All Tags in a set are listed
        + Nested Named Collections_Search_Results
            + graphic dropdown from the title
        + Search_Filter_Results
            + Search term shows as collection title
            + Create Collection Button/Modal in the top corner
            + And/Or toggles for filters search results
            + Shows search time result numbers
        
    }
    class Detail_View{
        + semitransparent modal
        + asset sort of just zooms in and gets bigger when selected
        + Different detail views for Images, Videos, and Placements
        + Properties All Assets Have
            + File
            + Description
            + Location
            + Tags
        + Buttons All Detail Views Have
            + Download Button
            + Share Link
            + Show Collections Button
            + Other Angle Button
            + Related Button
        + Types of Detail View
            + Images
                + Can Zoom To Full Quality
                + PNGs aren't shown full screen
                + Vector images too
            + Video
                + Full Screen
            + Placements
                + Platform
                    + Placement
                + Approval if admin
                + Link to actual post
        + Long Term
            + plug into social media analytics
            + email platforms
            + Shopify catalog sales data
            + clear view of which media assets
            + resonate best with our audiences
            + sell best to our customers
    }

graph TD
A[Search Bar] --> B[Excludes]
A --> C[Includes]
A --> D[New Searches]
E[Sort Bar]--> F[Sorts]
E --> G[View Settings]
F --> H[Date Made]
H --> I[Oldest]
H --> J[Newest]
H --> K[Closest to given date]
F --> L[Location]
L --> M[Nearest]
L --> N[Farthest]
L --> O[From me or from given address]
F --> P[Creator Or Camera]
P --> Q[Multi-select specific creators]
P --> R[Multi-select cameradevice types]
F --> S[Tag/Description/Sub-Search]
S --> T[Multi-select tags]
S --> U[Multi-select your own saved search terms]
F --> V[Popularity]
V --> W[Favorited]
W --> X[By you]
W --> Y[By creator/uploader]
W --> Z[By your team]
W --> A1[By everyone]
V --> B1[Downloaded/Used]
B1 --> C1[Same breakdown as Favorited]
B1 --> D1[Recently]
D1 --> E1[Nested date filter here]
B1 --> F1[In your location]
F1 --> G1[Nested location filter here]
V --> H1[Viewed/Opened]
H1 --> I1[Same breakdown]
F --> J1[Season]
J1 --> K1[User current season by default]
J1 --> L1[Option to pick your own season]
F --> M1[Genre Tagged by AI]
M1 --> N1[Popular Stock Imagery type categories]
N1 --> O1[Angle & Perspective]
O1 --> P1[Aerial]
O1 --> Q1[On Foot eye-level]
O1 --> R1[Unique/Macro]
N1 --> S1[Plants]
S1 --> T1[Landscape]
S1 --> U1[Park]
N1 --> V1[People]
V1 --> W1[By Group size]
W1 --> X1[Portrait]
W1 --> Y1[Group]
W1 --> Z1[Event]
W1 --> A2[Public]
V1 --> B2[By Type]
B2 --> C2[Professional]
B2 --> D2[Outdoors]
B2 --> E2[Social]
N1 --> F2[Buildings]
F2 --> G2[Facade]
F2 --> H2[Skyline]
N1 --> I2[Infrastructure]
I2 --> J2[Automotive]
I2 --> K2[Road]
I2 --> L2[Plane]
I2 --> M2[Airport]
I2 --> N2[Bridge]

graph TD
    Home("Home is basically a collection view with nested collections in it.") -->|Choose one of the nested collections| Nested_Collections("Dropdown to select from nested collections (aka other public lander galleries) in Collection Title")
    Nested_Collections -->|Options| Dropdown("Dropdown to 3 options: Denver, Aspen, and a user's city")
    Dropdown -->|User's City| Email_Capture("Email capture dialog after they type in their city to add them to a waitlist for their city")
    Email_Capture -->|Continue| Billing("Billing page to pre-sell them")
    Home -->|Tag| Search("Click on a tag on the home page (unlike a named collection) opens a whole new search for that tag")
    Home -->|Scroll| Suggested_Tags("Suggested tags show up in the sidebar when you scroll down")
    Nested_Collections -->|Named Collection| Collection_Title("Collection Title instead of Colorado Springs in it’s best light")
     Collection_Title -->|Description| Description
     Collection_Title -->|Tags| Tags("All Tags in a set are listed, clickable to filter the assets shown below")
    Search -->|Create Collection| Create_Collection("Asks title (auto fills with search term), description, tags, etc.")
    Search -->|Search Within| Filters("And/Or toggles for filters & search results")
    Search -->|Search Time & Result Numbers| Time_Result("Shows search time & result numbers")

graph TD
    A[mobile friendly toggle] --> B[Images should have two states on mobile]
    B --> C[two taps to open image/collection]
    B --> D[three-dot dropdown on long hold]
    D --> E[sort]
    A --> F[3 new buttons on top bar]
    F --> G[Invite]
    G --> H[add team members]
    G --> I[add contractors/clients]
    G --> J[refer a new subscriber]
    F --> K[Help]
    K --> L[tutorials]
    F --> M[Produce]
    M --> N[track number of productions used]
    M --> O[reset on Jan 1st]
    A --> P[Select button]
    A --> Q[Sidebar AND/OR search results toggle control]
    A --> R[Image hover should have smaller text]
    R --> S[overflow rules for long tags]
    R --> T[open image/collection buttons]
    T --> U[top 3/4 tag text area open image]
    T --> V[bottom 1/4 open collection]
    Q[Tutorial] --> W[Teach-Yourself-Option]
    W --> X[Video & javascript tutorial options]
    X --> Y[downloading images]
    X --> Z[organizing favorites]
    X --> AA[finding/searching]
    X --> BB[related & other angles buttons]
    X --> CC[exploring collections]
    X --> DD[sharing sets/collections]
    W --> EE[chat/email help]
    W --> FF[highlight help button]
    Q --> GG[Help tab]
    GG --> HH[chat support]
    GG --> II[tutorials]
    GG --> JJ[productions]
    GG --> KK[feedback page]
    Q[Favorites] --> LL[Public]
    LL --> MM[Lander Favs]
    LL --> NN[Photographer/Contributor Favs]
    LL --> OO[Customer Favs]
    Q --> PP[Private]
    PP --> QQ[Company wide Favs]
    PP --> RR[Your personal Favs]
    Q --> SS[Suggested]
    SS --> TT[most downloads]
    Q --> UU[Featured collections]
    UU --> VV[Collections]
    VV --> WW[What/who/when/where]
    WW --> XX[What]
    WW --> YY[Who]
    WW --> ZZ[When]
    WW --> AAA[Where]
    AAA --> BBB[Name/title]
    AAA --> CCC[Address]
    VV --> DDD[Controls]
    DDD --> EEE[Remove from collection]
    DDD --> FFF[New collections from batch selection]
    Q --> GGG[Search results]
    GGG --> HHH[Photos]
    GGG --> III[Collections/Shoots]
    Q --> JJJ[New production]
    JJJ --> KKK[Yes]
    KKK --> LLL[Collection]
    LLL --> MMM[Tags/description]
    LLL --> NNN[Thumbnail]
    Q --> OOO[Past productions]
    OOO --> PPP[Single day of uploads]
    Q --> QQQ[Invite/Refer]
    QQQ --> RRR[Team level adjustment]
    Q --> SSS[Most-downloads icon]
    Q --> TTT[Upload]
    TTT --> UUU[Title/description]
    UUU --> VVV[Save data]
    UUU --> WWW[Recent collections]
    UUU --> XXX[Favorites]
    UUU --> YYY[Slideshow]
    UUU --> ZZZ[Suggest tags]
    Q --> AAAA[Tagging page]
    Q --> BBBB[Image page]
    BBBB --> CCCC[Unique sharable URL]
    BBBB --> DDDD[Search/place/image]
    BBBB --> EEEE[Logged in/out]
    Q --> FFFF[Video page]
    FFFF --> GGGG[Loop video]
    Q --> HHHH[Placement]

In-Depth Feature Designs & Descriptions

Data Model

classDiagram
class Collection {
		+uniqueID: string
    +title : string
    +description : string
    +collections (formerly tags)  : array<string>
    +location : string
    +createdDate : date
		+uploadedDate : date
		+customizedDate : date
    +items : array<string>
}

class Media {
		+uniqueID: string
    +title : string
    +description : string
    +collections (formerly tags) : array<string>
    +location : string
		+EXIF : array<string>
    +platforms : socialMedia
    +placement : array<string>
		+createdDate : date
		+uploadedDate : date
		+customizedDate : date    
		+type (video, image, placement, copy, PDF): string // added property - can be 'video', 'image', 'copy (text)', 'PDF', or 'placement'
		+approved : boolean
		owner: User
		uploader: User
		viewers: Array<User, Date>
}
class Gallery {
    name: string
    users: array
		darkMode: boolean
}

class User {
    name: string
    email: string
		companies: Company
		socialNetworks: SocialNetwork
		galleries: array<Gallery>
    adminType(billing, admin, owner): string // can be 'billing', 'admin', or 'owner'
		stripeUserID: string
		paypalUserID: string
		preferredPayments: string
		galleryColor: string
		defaultGallery: Gallery
		favorites: array<MediaID, CollectionID>
		uploads: array<MediaID, CollectionID>
		downloads: array<MediaID, CollecionID>
		views: array <mediaID, CollectionID, Date>
}

class Company {
    name: string
    horizontal-logo: string
    website: string
		socialNetworks: array<SocialNetwork>
		galleries: array<Gallery>
}

class SocialNetwork {
    platform(s): array<string>
    avatar: string
    username: string
		users: array<User>
}

Gallery --> Collection
Gallery --> Media
Gallery --> User
Company --* SocialNetwork
User --> SocialNetwork
User --> Company
User --> Media
Media --> SocialNetwork
Collection --* Media

classDiagram
    class Image {
        +title : string
        +description : string
        +tags : array<string>
        +location : string
        +date : date
    }

    class Collection {
        +title : string
        +description : string
        +tags : array<string>
        +location : string
        +date : date
        +items : array<string>
    }

    class Placement {
        +title : string
        +description : string
        +tags : array<string>
        +location : string
        +platform : array<string>
        +placement : array<string>
        +date : date
        +approved : boolean
    }

    Image --> Collection
    Image --> Placement
    Collection --* Placement