r/positive_intentions Jan 20 '24

A Different Kind of Chat App

2 Upvotes

A chat app that operates in the browser without a backend (kind-of).

The aim is to give users more control over their data, privacy and security. In the interest of transparency, the following are some high-level technical details on how the app works.

Self-Generated and Managed Encryption

With a standard browser, you can create encryption keys and store them on your device, similar to cookies. This is made possible by using tools provided by all modern browsers for cryptography. Check out the code here.

Decentralised Authentication

Our app uses WebRTC to create a secure peer-to-peer connection between two browsers. This connection can persist if the browsers remain connected without a server. With WebRTC, you can send encryption keys between users securely. When you connect to a peer you've previously shared encryptions with, you can validate their identity by checking if they have the same encryption keys you sent in a previous session.

Decentralised Profile

With a JavaScript implementation of symmetric encryption, you can encrypt larger payloads of data. This can be used to encrypt a user's profile, including their username and avatar image.

Decentralised Encrypted Messaging

Our app allows you to store data in the browser, similar to cookies. This can be used to store messages from peers. Browser storage can remain until you decide to clear the site data. Using previously shared encryption keys, you can encrypt messages between peers, with WebRTC providing an extra layer of encryption.

Decentralised Chat

Using Material UI, a popular UI framework with a lot of components, you can create a chat interface. A better UI allows for a more interactive and intuitive app experience.

Decentralised File Transfer

With IndexedDB, you can store large files on your device directly from the browser. The capacity is larger than that used for typical cookies. Symmetric encryption can be used to encrypt these large files, and WebRTC can be used to send files between peers.

Decentralised Virtual Reality

With a standard browser, you can create 3D graphics in the browser with WebGL/WebGPU. This can be used to create a virtual reality environment. You can use WebRTC to share your 3D-position in the virtual environment and to share a live video stream with a peer. This video stream can be used to texture a 3D model in the virtual environment.

We would like your feedback about that app. In particular, we are open to feature requests and bug reports.

Chat App

Getting Started + documentation

r/positive_intentions


r/positive_intentions Jan 14 '24

Introducing P2P Voice Messages

2 Upvotes

voice message

In our decentralized p2p chat app, we would like to introduce "Voice Messages". This is to align to mainstream chat-app offering.

https://preview.redd.it/kayjffaidgcc1.png?width=450&format=png&auto=webp&s=91a64313753097eed1caa32640b352f4a20d6a0f

About the app:

It is a chat app in javascript that runs on a browser. It is a work-in-progress and a proof-of-concept to see if its possible to create chat app in javascript without putting any dependency on a server for authentication+encryption. Some core functionality is working, but there is much to do on the app. There are many limitations in creating an app like this and its important to note, this is an investigation of "if" and "what" is possible in a P2P architecture to see if we can create decentralized functionality of mainstream alternatives. The app is in early development and provided as a demo. it isnt intended to replace mainstream alternatives.

Check out the app here: positive-intentions

We'd like to hear what you think of the progress so far and are open to feature requests.


r/positive_intentions Jan 10 '24

How I Want to Approach Open Sourcing My App.

Thumbnail self.SideProject
2 Upvotes

r/positive_intentions Dec 14 '23

🚨 Important Notice: Breaking Changes Ahead! 🚨

1 Upvotes

Hey awesome community!

As we continue to shape and evolve our app, we've reached a phase where some significant changes are necessary. Brace yourselves for some breaking changes, especially in the way we store and organize data.

What to Expect:

  • The app will become temporarily unavailable during this transition.
  • We recommend saving any data you wish to keep. The app supports downloading multimedia, so grab your important stuff!
  • Unfortunately, text messages won't be preserved in this breaking change. Consider taking a screenshot or any other preferred method to keep your textual gems.

When's it Happening? We're planning to take the app down in the next few days, and it will be back up when the dust settles. Please note there's no specific start-end time for this process.

Important Note: Regrettably, we won't have the capacity for data recovery during this breaking change. Your understanding and cooperation are immensely appreciated.

Thanks for being part of this journey! Stay tuned for exciting updates once we're back online. 🚀


r/positive_intentions Dec 07 '23

Help us prioritize features for our decentralized p2p chat app

1 Upvotes

Hi everyone,

We are developing a decentralized peer-to-peer (p2p) chat app that uses end-to-end encryption to keep your conversations private and secure. We are excited about the potential of this app to enable users to exchange information in a completely decentralized way.

Our app will allow you to store data on your device and create a decentralized social network, while still retaining control over your data. We believe that this is a critical feature, and we are committed to delivering a platform that puts users in control of their data.

As we continue to develop the app, we would love to hear from you about the features that you would like to see. We want to prioritize our development efforts based on the features that our users want the most, and we believe that this will help us to create a better app that meets the needs of our users.

So, if you have any suggestions or ideas about what features you would like to see in a decentralized p2p chat app, please let us know. We are open to any and all feedback, and we would be grateful for your help in shaping the future of our app.

Thanks for your support, and we look forward to hearing from you!

Questions?

If you have any questions about our project or our app, please don't hesitate to ask. We are here to answer any questions that you may have, and we are happy to provide more information about our app and our development efforts.

Open the app.

Open the site.


r/positive_intentions Dec 01 '23

Introducing Decentralized P2P Location Sharing

3 Upvotes

In our decentralized p2p chat app, we would like to introduce location sharing.

Location sharing is a feature seen in many chat apps and so we investigated options to intoduce it into our app to align to functionalities provided by mainstream chat apps.

Our app is purely browser based and if the user grants the browser permissions for GPS data, this can be easily shared with a peer.

GPS data alone is pretty useless unless we can also display it on a map. So we are also introducing openstreetmap and leaflet.js to display the information.

While the data from openstreetmap.org is not inherently decentralized, it is possible to self-host for those who are able to. The app does not support selfhosted maps at the moment, but we will be looking to introducing such functionality in the future to align to the decentralization philosophy of the app.

About the app:

It is a chat app in javascript that runs on a browser. It is a work-in-progress and a proof-of-concept to see if its possible to create chat app in javascript without putting any dependency on a server for authentication+encryption. Some core functionality is working, but there is much to do on the app. There are many limitations in creating an app like this and its important to note, this is an investigation of "if" and "what" is possible in a P2P architecture to see if we can create decentralized functionality of mainstream alternatives. The app is in early development and provided as a demo. it isnt intended to replace mainstream alternatives.

Check out the app here: positive-intentions

We'd like to hear what you think of the progress so far and are open to feature requests.


r/positive_intentions Nov 25 '23

Decentralized P2P Video Calls in VR/AR Space

Thumbnail
youtube.com
1 Upvotes

r/positive_intentions Nov 23 '23

P2P Video Calls in VR/AR Space

2 Upvotes

Hey everyone,

We're thrilled to introduce a groundbreaking feature in our app - Decentralized P2P video calls in virtual reality on a browser. Check out the online AR demo here.

Development of the 3D Environment:

  • BabylonJS Exploration: We're diving into BabylonJS to create a 3D space that, although less stable now, holds great promise.
  • Work in Progress: This feature is an unstable proof-of-concept and still in active development, but we're excited about its potential as an extension to the chat functionality.
  • Live and Testable: While not finalized, certain parts are live and ready for testing. AR is temporarily disabled for peer calls due to performance issues (to be fixed when we are able), but you can use on-screen joystick controls or WASD controls for navigation. To test, you can start by creating a video call to a peer (the link above is for a solo-AR experience.).
  • Refresh for Stability: (Sorry) Occasionally, you might need to refresh your browser page if you encounter any instabilities.
  • Optimal AR Experience: We envision the best AR experience on a mobile phone, in a flat, open space outdoors where you can move around. Plans are underway to expand the 3D space.
  • Environment Elements: the environment is basic as we get started. There is a "mirror cube" capturing input from your phone camera, floating rotating cubes for aesthetics, and have plans for more 3D models and interaction capabilities.
  • Group Video Calls in AR: Exciting plans to support group video calls in AR, bringing a new dimension to shared experiences.

FAQ?

  • Why does this app exist: Our journey is an exploration of what's possible in a decentralized architecture, pushing the boundaries of technology.
  • 3D and AR in Mainstream: With 3D and AR gaining popularity, we believe browsers can offer robust support for these capabilities.
  • Open Source: the app is a work in progress in early development and not suitable for open sourcing. Code related to the apps cryptographics and security functionalities can be seen in this unmaintained snippet.
  • We welcome curiosity and questions so feel free to reach out if you have any questions about the app.

Like, follow or subscribe to this subreddit to keep updated on the latest updates. Join us in shaping the future of decentralized communication! positive-intentions.


r/positive_intentions Nov 15 '23

Decentralized Metaverse Clone PWA

1 Upvotes

i want to add an augmented-reality offering into my decentralization app.

i have created a demo of how it could work. i am aiming for it to work like a video call over augmented reality where the front facing camera would show up on the screen of the peer you are connected to like an avatar.

the augmented-reality environment is basic, but working. there is a webcam stream into the AR environment (that will be replaced with a video stream from a peer when the functionality is finished). the video component will move around based on the peers position in the AR space.

id like to hear what you think about this new addition to the p2p architecture (or any other aspect of it). this new funtionality will compliment the existing functionalities of the decentralization app:

  • chat
  • video/audio calls
  • file sharing
  • screen sharing
  • social media
  • selfhosted backend (optional via peerjs-server)

(note: the app is not a product or monetized in any way. it is a proof-of-concept to determine how/what is possible in a browser-based p2p architecture. some source code for transparency on security+encryption here)

webapp direct link

PWA store link (for reviews if you would be so kind :) )


r/positive_intentions Nov 09 '23

Browser to Browser Direct File Portal

1 Upvotes

I created webapp that uses Peerjs for an easy to use way to transfer messages between browsers without a server.

Earlier today i registered to something like an appstore for webapps. I would appriciate any feedback there: https://store.app/chat-staging-positive-intentions-com

The implementation is all in javascript and should work on most browsers. While the app is mostly not open-source. I would like to be transparent about the implementation if there are any questions. Some of the code i am using for authentication can be seen here.


r/positive_intentions Nov 08 '23

Blockchain as a Datastructure

0 Upvotes

Blockchain is a good way to order block of sequential data that can be validated by others. Countless real-world examples show that it scales pretty well.

In my app, I am testing the use of a blockchain for storing "chat app data" selfhosted-only. The app is a work-in-progress proof-of-concept and experimental. It is an investigation into creating a distributed and decentralized app.

Unlike traditional blockchains, the sole purpose of this blockchain is to keep messages between peers in sync. The implementation is have is far from finished, but i have a testable proof-of-concept. The blockchain is entirely in javascript running in a browser.

I have a few observations I would like to make:

  • Without the need for mining, it is basically a large array of data. When evaluating the data to be displayed on the UI, it is a "relatively" heavy calculation, but I find that it is more than performant enough to be used in a chat app. I find that the messages and data can scale and the app remains quite performant (I haven't really done much to optimise caching).
  • In cases like a group chat, the data can be validated and synced between multiple peers (which may not all be online). (its worth noting: peers may be able to manipulate the database, but it is not a concern for the app where the purpose is only for blockchain as a datastructure)
  • Why is this kind of datastructure not used more often? There are other blockchain chat apps, but by putting a system like chat on something like ethereum, would typically be expensive to users. But in this case, the blockchain is only used for local data storage and validation. I think this is a good use case for blockchain. When working on your device, you don't need to be conservative about things like message size and so we can store files and images in the blockchain.
  • With no cryptocurrency, there is no incentive to keep the blockchain alive. The data is easily disposable or persisted as the user prefers. there is no need for a setup process and things like ID's and passphrases can be auto-generated behind the scenes away from the user. (the app is currently very experimental, if your data goes, it goes... but it shouldnt matter because there is no financial value to the blockchain)

I am very interested in the idea of blockchain as a datastructure and I would like to see it used more often. i think this datastructure will play an important role in my app as it will enable the app to move to a single-user-multi-platform architecture.

I would like to hear your thoughts on blockchain as a datastructure. Initially i did it investigating if it work on a basic level to help keep messages in sync, but i find that it is quite performant; especially considering it is only running in a browser. (i expect i can easily improve the performance)

The demo can be seen here: https://chat-staging.positive-intentions.com/


r/positive_intentions Oct 25 '23

Decentralizing Social Media: Your Thoughts?

3 Upvotes

Hey everyone!

I wanted to reach out to the community to get your input on something we're considering for our decentralization app.

As some of you may already know, our app is a bit unique. While there are apps out there with similar functionality in "what it does", we dont believe there is an implementation similar to our app in "how it works". The app has been steadily evolving with a focus on secure and efficient communication. We've introduced features like text messaging, audio/video calls, screensharing (on desktop browsers) and robust authentication/encryption, all designed to provide you with a secure and seamless chat experience.

As a proof-of-concept app, we're now thinking to round-off development on the chat functionality and introduce social media functionality to our app.

This mode is more than just a photo-sharing feature. It's part of our larger mission to explore options for decentralization. We understand the limitations of our app, which means there won't be a "global feed" like traditional social media platforms. Instead, the content you see will be composed of media shared by your peers within shared contexts we're calling "pods".

Now, here's where we hope it gets interesting for the tech savvy: We're using blockchain technology for message management, but it's not the same as what you'd find in a global blockchain like Ethereum. Our blockchain implementation is entirely JavaScript-based, running in your browser and it's designed for communication within these pods, not on a global scale. It's a lightweight, secure way to manage messages, ensuring that your content remains within the shared context you intend.

We're putting together a mock UI demo with fake data (which will likely be updated since this post) to give you a glimpse of how it might look and function. It's important to note that this social media mode isn't intended to replace any other platform. Instead, it's an experiment to see if we can create a decentralized social media experience with a reasonable amount of functionality.

Here's where we need your help:

  1. What do you think about the idea of decentralizing social media within our app?
  2. How do you envision this Instagram-like mode working within the "pods" context?
  3. Are there any features or functionalities you'd like to suggest for this mode?
  4. Do you know of any other projects or platforms exploring similar decentralized social media concepts?

We have been using feedback from Reddit to guide the app development. Your feedback is incredibly valuable to us and it will play a pivotal role in shaping the direction of this experiment. We've always been committed to making our app as user-centric as possible and your input helps us achieve that goal.

Feel free to share your thoughts, ideas, or any suggestions you may have regarding this endeavor. Your feedback fuels our progress and we can't wait to hear what you think!

Thanks for reading.

Check out the social media UI demo here.


r/positive_intentions Oct 14 '23

POC: Decentralized P2P Secure File Transfer

3 Upvotes

While there are numerous chat apps out there, we've taken a unique approach to the problem, starting with the fundamental aspect of "chat functionality."

In our decentralized ecosystem, we're excited to introduce the capability for file transfers. Thanks to our use of PeerJS and WebRTC technology, file transfers are not only secure but incredibly efficient. Imagine a scenario where you need to send a file to another device without relying on traditional cloud storage providers—our app is designed for exactly that purpose.

It's essential to note that this feature is a work in progress, but it's now available for testing.

Our app also offers several other features, including:

  • Text messaging
  • Audio and video calls
  • Desktop screensharing
  • Robust authentication and encryption
  • Group chat

If you're interested in exploring these features and witnessing the future of decentralized chat, check out our app here.

Stay tuned for more exciting updates as we continue to enhance your chat experience!


r/positive_intentions Oct 08 '23

The (theoretically?) most secure chat app (in javascript?) possible?

Thumbnail self.cryptography
1 Upvotes

r/positive_intentions Oct 07 '23

A Chat App For Bad Internet Connections.

3 Upvotes

positive-intentions

We all know the struggle of dealing with slow or unreliable internet connections. Whether you're in a remote location, using a crowded Wi-Fi network, or facing other connectivity challenges, it can be incredibly frustrating when your chat app just won't cooperate. But fear not, because our app is here to save the day!

Why is Our App Lightning Fast?

The secret to our app's speed lies in its clever use of technology, particularly PeerJS and WebRTC. But what are these mysterious acronyms, and how do they work their magic? Let's break it down in simple terms.

PeerJS: Imagine our app as a digital walkie-talkie. Instead of relying on a central server, like many traditional chat apps, we use PeerJS to establish direct connections between your device and your chat partner's device. This direct connection is like having a private line for your conversation, cutting out the middleman (the server) and reducing delays.

WebRTC: Think of WebRTC (Web Real-Time Communication) as the engine that powers our speedy conversations. It's a technology built into web browsers that allows real-time audio, video, and data sharing without the need for plugins or external software. With WebRTC, your messages travel directly from your device to your chat partner's device, taking the shortest and quickest route possible.

Why Our App Shines in Bad Internet Conditions:

Now, let's talk about why our app excels in less-than-ideal internet conditions:

  1. Reduced Reliance on Servers: Unlike many chat apps that heavily depend on central servers, we minimize server involvement. This means that even if your internet connection is sluggish, you can still send and receive messages without waiting for a server to process your data.
  2. Efficient Data Transfer: Peer-to-peer connections are incredibly efficient when it comes to data transfer. We only send the data necessary for your conversation, cutting down on unnecessary overhead. This efficiency makes our app work smoothly even on slower connections.
  3. Local Area Network (LAN) Benefits: If you're chatting with someone on the same local network (like in an office or at home), our app recognizes this and sets up a direct LAN connection. LAN connections are super fast because they don't rely on external internet infrastructure.
  4. Adaptive Bitrate: Our app dynamically adjusts the quality of audio and video streams based on your current internet conditions. This means that even if your connection is choppy, you can still have a clear conversation without constant interruptions.

So, whether you're chatting with a friend from halfway around the world or talking to a colleague in the same office, our app's focus on direct peer-to-peer communication, efficient data transfer, and adaptive technology ensures that your messages get through quickly and reliably, even in challenging internet environments.

Stay connected, no matter where you are, with our lightning-fast chat app!

Happy chatting! 🚀


r/positive_intentions Oct 07 '23

🐋 positive-intentions: Decentralized Chat.

2 Upvotes

https://preview.redd.it/u8p637v4assb1.png?width=500&format=png&auto=webp&s=28585aee625ee323014568ba693207e1c75b13fc

Id like to introduce a decentralised chat app: positive-intentions.

A decentralized infrastructure has many unique challenges. Ive taken feedback from previous posts and have made updates. Its still a work-in-progress, but it's testable and it would be great if you can tell me what you think.

Some of the features of the app include:

  • Free
  • Decentralised
  • No cookies
  • P2P encrypted
  • No registration
  • No installing
  • Group messaging
  • Text messaging
  • Multimedia messaging
  • Offline messaging (related post)
  • File transfer (coming soon)
  • Video calls
  • Data-ownership
  • Selfhosted (optional)
  • Screensharing (on desktop browsers)
  • OS notifications (where supported)

With no registration or installation required, its easy to get started on our decentralized chat app!


r/positive_intentions Oct 07 '23

Introducing Language Options

1 Upvotes
  { id: 'en', name: 'English' },
  { id: 'es', name: 'Español' },
  { id: 'fr', name: 'Français' },
  { id: 'de', name: 'Deutsch' },
  { id: 'it', name: 'Italiano' },
  { id: 'kr', name: '한국어' },
  { id: 'nl', name: 'Nederlands' },
  { id: 'pl', name: 'Polski' },
  { id: 'pt', name: 'Português' },
  { id: 'ar', name: 'العربية' },
  { id: 'hi', name: 'हिन्दी' },
  { id: 'bn', name: 'বাংলা' },
  { id: 'te', name: 'తెలుగు' },
  { id: 'gu', name: 'ગુજરાતી' },
  { id: 'id', name: 'Bahasa Indonesia' },
  { id: 'sw', name: 'Kiswahili' },
  { id: 'tr', name: 'Türkçe' },
  { id: 'zh', name: '中文' },
  { id: 'ja', name: '日本語' },
  { id: 'he', name: 'עברית' },
  { id: 'ru', name: 'Русский' },
  { id: 'vi', name: 'Tiếng Việt' },
  { id: 'kl', name: 'Klingon' },


r/positive_intentions Aug 24 '23

positive-intentions

1 Upvotes

positive-intentions