Code Monkey home page Code Monkey logo

hey's Introduction

Hi ๐Ÿ‘‹

I'm Ben! I use he or they pronouns.

I recently completed a batch at the Recurse Center, which you can read a bit about on my blog. Before that, I built out infrastructure at EFF. I've also worked with community networks, ISPs, live event networks, and more.

Things I like:

  • Network programming and backend development in Go and Python
  • Web scraping, data wrangling, and building tools to support journalism and digital research
  • Math - mostly recreationally, but I love when it fits into my work!
  • Challenge sets and CTFs - Protohackers, Cryptopals, Hanukkah of Data, etc
  • People! I'm passionate about how different folks learn and grow together, how to maintain happy and healthy teams, and things like that. People are cool.

hey's People

Watchers

 avatar

hey's Issues

Make app self-documenting

  • Documentation on each create/detail/update view
    • Friend: explain last_contact, status, and group
    • Group: explain how cadences work, and default groups
    • Account: explain how timezones play into things
  • about page for anonymous users
  • welcome/tutorial page for logged-in users (redirect from signup)

Implement Cadences

  • A Friend should have one or more Groups
  • A Group should have a contact Cadence (how often you want to check in)
  • A Friend should also have a contact Cadence
  • Each week, each Friend should be marked for contact if their Cadence has expired or their Group cadence has expired
    • Resolution order: Friends Cadence (if defined) > shortest Cadence of Friend's Groups

Default Groups: Inner Circle (1 week cadence), Connection (1 month cadence)

CalDAV and CardDAV support

It'd be great to be able to import/export friends vie CardDAV, and to automatically assign check-ins to a calendar via CardDAV.

Support (and optionally require) email auth

For local use, a username works great. If this is going to be an online service, however, it'll need to support email.

Currently, I could just add this to the Account model as an option for users, which isn't bad for privacy purposes. However, I think most folks that are willing to post their private lives into this app would also prefer to provide an email to recover access to that same personal data.

This will require implementing a child class of AbstractBaseUser, which will take a bit of work and probably changes throughout the application. I think it will also break any existing databases, so probably best to do this sooner rather than later.

Relatedly, this should also include email verification and password resets, but configuring a mail client will require some extra work since the administrative user probably wants to pick their own.

Implement REST API

I'd like to have a REST API, mostly to allow a command-line client for monitoring upcoming check-ins.

Support photos for friends

This would make things a bit more personal, and it could also make for nicer UI on mobile. It'd be nice to see your friend's face when thinking about contacting them, and unlike social media you get to pick a photo that feels meaningful.

Requires file uploads, but WhiteNoise should make serving the media fairly straightforward.

Good to also document recommendations for how to configure a CDN in front of the app.

Defend against spam

  • See also #6 (verification email)
  • Could make a "test" version of the site that deletes accounts older than N days (allow a trial period of like two weeks?)
  • Limit Friend and Group count (e.g. 50 Friends, 5 Groups). This could even be per-user or per-auth-group, to enable a subscriber/donor model where free users are provided with an ample number of records, but anyone needing extensive storage can subscribe to accommodate it.
  • Revisit database schema to limit textfield sizes.

Implement password reset for users

  • Users should be able to reset their password via their account page.
  • API clients should continue working, but active sessions other than the one requesting the reset should be invalidated.

Front-end

Currently, everything is rendered pretty simply using Django templates. If a page needs some JS, it's just included via a template block.

I'd like to improve this with better-defined UI elements using Svelte. I'll also just stick to plain CSS for now, but I'm curious about Tailwind.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.