# Celestia Hackathon Ideas
### Original Data Square (ODS) visualizer
Currently, there isn't an easy way to visualize the original data square of a Celestia block.
This idea entails building a visualization tool (either CLI or web app) that visualizes shares in the original data square. The end result should show something like this:

with unique colors per namespace. We could special-case the reserved namespaces so they always use the same color. The tool could accept chain-id and block height as parameters.
The long-term goal of this project could be to get it upstreamed into an explorer. See [celenium-interface#35](https://github.com/celenium-io/celenium-interface/issues/35).
### Rust Consensus Node
Currently, the only Celestia consensus full node implementation is written in Go. We could write an experimental consensus full node implementation in Rust.
The short-term goal of this project could be something minimal. Rough steps:
1. Start a Rust project that builds a binary with one command line argument for chain-id
2. Connect to the p2p network for that chain-id
3. Fetch a block height from an existing Go consensus full node for that chain-id. Log the block height and hash.
The medium-term goal of this project could be to implement [`ProcessProposal`](https://github.com/celestiaorg/celestia-app/blob/main/app/process_proposal.go) in Rust so that it could be fed into [SP1](https://github.com/succinctlabs/sp1). Out of scope: p2p, networking, mempool.
The long-term goal of this project would be to have a totally functional consensus full node implementation in Rust. Notable features include: can follow the tip of the chain, propose blocks, and sync from genesis.
Name ideas for the binary: rtia, relestia, cars (inspired by Celestia-App RuSt).
### Rust `CreateCommitment`
A subset of the previous idea that implemenets [`CreateCommitment`](https://github.com/celestiaorg/go-square/blob/17df7a207fbd75cf83c238618da54a2e3d021c61/inclusion/commitment.go#L14-L19) in Rust. This is important for roll-ups that want to generate the share commitment for some blob in Rust instead of Golang.
### Kurtosis package
Currently, there isn't a [Kurtosis package](https://catalog.kurtosis.com/catalog) for Celestia. Kurtosis is a tool that enables developers to spin up local (or remote) test environments with containers. We could build a Kurtosis package for Celestia that includes a container for a consensus validator, a DA bridge node, and a DA light node. We could define a variant of the package with a faucet and local block explorer. This is kind of like [celestia-stack-internal](https://github.com/celestiaorg/celestia-stack-internal/).
### Address watcher
[Etherscan](https://etherscan.io/myaddress) offers a service called "Watch list" that enables users to set up email alerts for Ethereum addresses. The user can choose to be notified when an address sends or receives some ETH. A similar service would be beneficial for Celestia users. Ideally a user could elect to monitor multiple Celestia addresses for operations like:
- Address received TIA
- Address sent TIA
- Address delegated TIA
- Address claimed TIA rewards from delegation
- Address submitted a blob
### File uploader
Create a front-end that makes it easy to upload files to Celestia.
- Advanced option: explicitly set namespace (by default use hard-coded namespace or deterministic namespace based on file contents)
- Advanced option: custom memo field. Can default to something like "submitted by blob.tools"
Potential domain names:
- blob.tools $23 or $3 on Namecheap
- blob.engineer $25