Skip to content
A [statically-typed] social ideas platform 🐕
TypeScript Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A [statically-typed] social ideas platform.

IdeaDog logo


Note that the current state of this repo and project will soon be outdated - I am currently hard, hard at work at completely revamping the front-end of IdeaDog. And I mean completely revamping. I am in the process of:

  • Converting the app onto server-side rendering with Next.js.
  • Converting authorization process into magic link sign in.
  • Moving authorization logic onto server with Express.
  • Reorganizing global state management with Redux & Redux Thunk.
  • Design overhaul.

If you would like a sneak peek at the code behind this revamp, you can check out this branch.

Stay tuned, there are some big-time updates in the works for IdeaDog. - Brennan

Description 💡

IdeaDog is a social media web application for sharing ideas.

We have all had those moments, those sudden bursts of inspiration where we think - "wow, that is simply a great idea" - but know we will never follow up. Now, instead of losing those ideas, share them with the world!

Why statically-typed?

Our kind of question.

The front-end of IdeaDog is built in React, with TypeScript, while the back-end runs on Rust. In our book, TypeScript + Rust = The Ultimate Statically-Typed Web App!

I have a great idea! Where can I post it?

IdeaDog is currently deployed at - please do check it out!


Note that authorization is currently buggy. If you attempt to log in/sign up, you will need to refresh the page twice upon verification for your account to register. Read the development note above for news on coming fixes ^^^.

Medium Blog Posts 📰

For a more in-depth description of IdeaDog as well as an overview of its tech stack and development process, we have written a series of articles on Medium. You can read them at the links below:

Tech Stack 🐩

IdeaDog Tech Stack

Dependencies 👫


Tool/Library Version
TypeScript ^3.5.3
React ^16.8.6
Material UI ^4.2.1
Navi ^0.13.3
Auth0 JS ^9.11.2
@dwqs/react-virtual-list ^1.0.0
clipboard-copy ^3.0.0

View the complete list of front-end dependencies in the corresponding package.json.


Tool/Library Version
Rust 1.35
Actix 0.7
ArangoDB ^3.4

View the complete list of back-end dependencies in the corresponding Cargo.toml.


Tool/Library Version
Node.js ^10.16.0
Yarn ^1.17.3
Parcel ^1.12.3
libssl-dev ^1.0

Front-End 🐕

View the dedicated front-end

Back-End 🐾

View the dedicated back-end

View the source code for the back-end Rust server at Martin's dedicated submodule.

Authentication 🔑

Auth0 Logo

Passwords are no fun. IdeaDog features a passwordless user authentication process managed by Auth0. The process works as follows:

  1. User enters email (for login) or both email + username (for signup). Front-end initially sends email/username to back-end.

    1. If logging in, and an account does not exist with the given email, back-end returns a redirect code, and user is directed to sign-up.
    2. Otherwise, back-end generates and returns a challenge token associated with the email.
  2. Front-end temporarily stores challenge token in localStorage, then uses the Auth0 API to send a login email to the user. The login email includes a random code that user must enter to verify account.

  3. Upon entering the verfication code, the user is redirected to the home page of IdeaDog. The redirect occurs on a URL hashed by Auth0 which the front-end parses to retrieve the user's Auth0 profile.

  4. Front-end pulls up challenge token from localStorage and returns it to the back-end with the verified email. Back-end generates and returns a bearer token in the form of a cookie.

    1. After being returned to the back-end, the challenge token is cleared from localStorage.
  5. The bearer token has been set and the user can fully acccess their profile!

Authors ✒️

License 🔒

This project is licensed under the MIT License - see the LICENSE file for details.

You can’t perform that action at this time.