-
Notifications
You must be signed in to change notification settings - Fork 0
/
TYLER 3D History Map Video Player
112 lines (86 loc) · 8.01 KB
/
TYLER 3D History Map Video Player
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
Historical 3D Map Timeline with Source Attribution and IPFS Integration
This project aims to build an interactive 3D map of the Earth that visualizes a timeline of historical events. The platform will allow users to explore history in both spatial and temporal dimensions, enhancing the understanding of how events unfolded globally over time. Key features of the platform include:
3D Earth Visualization:
Users can explore a fully interactive, rotating 3D globe, zooming in on geographic locations where historical events took place.
The globe will be overlaid with markers that represent key events in history, from battles to significant cultural moments.
Event Timeline:
A scalable timeline feature will allow users to navigate through different eras. As users move through time, corresponding events will appear on the globe, making it easy to understand the historical context geographically and temporally.
Each event can be tagged with specific timeframes (down to the most detailed level available based on evidence).
Crowdsourced Historical Data and Citations:
Users will be able to contribute by adding or updating historical events, providing detailed information and citing academic or reliable sources to support their claims.
Sources will be required for each submission, ensuring the credibility of the information. This will be verified through user contributions and peer reviews.
Events can be dynamically updated with new discoveries or information, giving the project a community-driven element.
IPFS Integration:
For detailed visualizations, users can upload or link to IPFS (InterPlanetary File System) resources. For example, an event might include an IPFS link that leads to a 3D reconstruction or an animated visualization of how a battle unfolded.
These resources will be decentralized, ensuring the data remains accessible and immutable.
Historical Event Tagging:
Events will be categorized and tagged for easy searchability. Tags will include dates, locations, types of events (e.g., battles, treaties, discoveries), and associated historical figures.
Users will be able to filter and explore specific types of events based on their interests.
Tech Stack:
Frontend: WebGL or Three.js for 3D map rendering, integrated with a timeline interface for event navigation.
Backend: Rust-based server with a database for storing events, users, and metadata. The database will include support for time-series data and geographic information (GIS).
IPFS: Integration for hosting larger media and complex visualizations that are decentralized and linked directly from event descriptions.
Peer-to-Peer Elements: Option to decentralize user contributions through peer-to-peer protocols, ensuring resilience and community ownership of historical data.
This map allows people to chose which sources they want, to weave their stories.
Imagine that videos are built and the sources that they clipped, could easily be clicked to see the highest resolution full video. Same with clipped documents or news articles. Even links to historical chats
Imagine a movie where you could follow the start of bitcoin through internet historical events, follow the github changes, with the bitcoin forums and emails.
Make the material easily linked, so this way we share just the highres file and we dont have to host a million different sizes.
Imagine pausing a video to see what book is on the shelf, and now you're reading the actual book, or in an info page about the book/its author.
A simple logo on a vest can even be tagged, where to buy that item, whos selling it the cheapest, reviews, history of the brand, whos "publicly" listed as employed there.
Or simple addons, like you've got one friend who does commentary on stuff to point out or add too different things so you could turn that friends, or content creators addon for example like addons for reading a book.
Would this be a good method below? Anyone know how to do this?
Join https://t.me/letscodetyler to chat about the project!
To code your 3D historical map project in the easiest and most structured way, you'll need to break it down into manageable components. Here’s a step-by-step plan for building it:
### 1. **3D Globe Visualization**
- **Tool**: Use **Three.js** or **CesiumJS**. Both are JavaScript libraries for rendering 3D graphics in a web browser.
- **Three.js** is more general and offers flexibility for custom 3D visualizations.
- **CesiumJS** is specifically designed for 3D geospatial data, which could simplify the Earth map rendering.
- **Setup**:
- Install **Three.js** using npm: `npm install three`.
- Follow basic tutorials for rendering a 3D globe model.
- Add interactive controls so users can rotate and zoom on the globe.
### 2. **Timeline Feature**
- **Tool**: Use a JavaScript UI library like **D3.js** to create a scalable, interactive timeline.
- D3.js is great for building data-driven visualizations, such as time-based charts.
- **Setup**:
- Install D3.js: `npm install d3`.
- Create a timeline that synchronizes with the 3D globe, so as users scroll or click through time, relevant events appear on the globe.
### 3. **Backend Development**
- **Programming Language**: Since you're familiar with Rust, use **Rocket** or **Actix Web** for building the backend API.
- **Database**: Use **PostgreSQL** for managing historical events, user data, and locations (with **PostGIS** for geographic data support).
- You can store events with metadata like dates, tags, and geographic coordinates.
- **Setup**:
- Install **Rocket** or **Actix Web**: `cargo add rocket` or `cargo add actix-web`.
- Create RESTful APIs to handle user-contributed events, retrieving events by date, and geographic location.
### 4. **Crowdsourced Data Contribution**
- Create a form on the frontend for users to contribute events.
- **Feature**: The form will require users to add details like:
- Event title, description, date range, location, and sources.
- **Backend**:
- Validate user submissions and store them in the database.
- Implement user authentication and authorization (for submitting, editing, or deleting events) using JWT tokens for secure access.
### 5. **IPFS Integration**
- **Tool**: Use the **IPFS HTTP Client** to link events with decentralized resources (e.g., 3D battle visualizations).
- Users will upload assets to IPFS using the client, and you’ll store the IPFS link in your database.
- **Setup**:
- Install the IPFS client: `npm install ipfs-http-client` or use the Rust IPFS crate.
- Allow users to submit an IPFS link to the event they create.
- Retrieve and display content linked from IPFS when viewing an event on the globe.
### 6. **Frontend-Backend Communication**
- **Tool**: Use **React** or **Vue.js** for the frontend framework.
- React works well with interactive components (like the 3D globe and timeline).
- **Setup**:
- Install React: `npx create-react-app my-app`.
- Make API calls to your Rust backend to fetch historical events, and render the results on the globe.
- Use WebSockets if you want real-time updates (e.g., when new events are added).
### 7. **Deployment**
- **Self-hosted**: You can host your app on a VPS or even a **Raspberry Pi** if you're targeting lightweight hardware.
- **Frontend**: Deploy the frontend using services like **Vercel** or **Netlify**.
- **Backend**: Deploy your Rust API on **Docker**, **DigitalOcean**, or **AWS**.
- **Database**: Use **AWS RDS**, **DigitalOcean**, or self-host **PostgreSQL**.
### 8. **Enhancements**
- **Event Filtering**: Allow users to filter events by type, region, and timeframe, showing them on the globe.
- **Social Integration**: Users could discuss or vote on events for credibility and community curation.
- **3D Models for Historical Events**: For complex events like battles, users can upload 3D models or animations to visualize how events occurred over time.
---
This breakdown makes it more manageable to build each part of the project. Would you like me to provide code snippets for a particular part?