Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

ChargeWeave, the supercharging game (take 4)

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
Hi everyone,

I woke today feeling rested enough to embark on the promised custom app for the TMC supercharging game. My current job has kept me in the role of manager these last three years, which prevents me from doing what I love most .. coding .. something that has otherwise occupied my days for 30 years (this month). Three years is too long away, so this project is a way to do what I love while helping the super-cool Tesla community.

Since I'm not legally allowed to profit from this undertaking, it will be completely free and open-source. I will donate the hosting and domain fees, along with my time, which isn't a hardship because I have some under-utilized AWS instances that host a few websites I made during my 20 years running my own software company.

So what are building?

* web front-end using JavaScript, ReactJS
* two mobile apps using JavaScript, React Native (Android and iOS)
* backend using Java, Spring Boot, Hibernate, RabbitMQ, AWS RDS (db)

We'll build it to full production standards, which means multi-region, load-balancing, fault-tolerant, high-security, etc. We might only have 20 concurrent users, but we'll build it for 20,000.

So what does it do?

At heart, the apps allow Tesla drivers to plan and log their visits to superchargers. Our first goal is to replicate the functionality that is now tracked manually in spreadsheets by the dedicated volunteers in the thread linked above. This includes:

* keep track of which users have visited which superchargers (and when)
* keep a tallyboard of users with the most visits, viewable by certain criteria
* allow users to see chargers along their route that they have not visited
* allow users to log visits using GPS, photos, and log text (like trail journals)

So why the name ChargeWeave?

I grew up in an ad agency, so brand names are second nature to me. I've come up with a dozen or so such names, using instinct and Roget's Thesaurus. ChargeWeave was the first name I thought of a few months back, though today I gave it the full Roget's treatment, looking and listing variations for an hour or so. Everything was either cliche or fraught with bad connotations.

ChargeWeave tells you what it's about ... connecting chargers together with routes and stories. We are collectively weaving our journeys through common waypoints, stitching together a future free of gas stations and smog.

As any good name, it allows the thing to expand beyond it's original intent, still anchored to charging as the central purpose. But it can grow beyond the current use (gotta catch 'em all) to allow other uses (tell your story for other visitors).

And, I got the domain names ;) chargeweave.com, chargeweave.net, chargeweave.org

So what's next?

I need to set up the infrastructure, which will include AWS, GitHub, Jira, Confluence, and CI/CD. We can then begin building out the backlog of features and even vote on which we want most.

Please use this topic to discuss your thoughts. This is a community project. I might be the only coder, but the ideas are everyone's.
 

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
Got GitHub and a Hello World app up in time for New Years...

helloWorld.png
 

Half Dollar Bill

Traveller, teacher, poet, accountant, innkeeper
Oct 19, 2013
1,674
2,193
Freeport Maine
I could read geeky stuff like this all day. Don't understand a word of it; just really fun finding others that enjoy doing what they do. Good luck!
One thing for certain, you will not have to ask twice for beta-testers. :)
 

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
I could read geeky stuff like this all day. Don't understand a word of it

English-to-english translation:

front-end .. the part you see (website or mobile app)
JavaScript .. programming language in web browsers
ReactJS .. widget toolkit for web apps (tabs, buttons, etc)
React Native .. widget toolkit for mobile
Java .. programming language for back-end (part you don't see)
Spring Boot .. Java toolkit for making back-end quickly
Hibernate .. framework for connecting to database
RabbitMQ .. framework for sending non-human messages
AWS .. the king of web hosting services (Amazon owned)
RDS (db) .. AWS database service (where the data will live)

multi-region .. multiple server copies in different parts of the world
load-balancing .. California swamps the server? Give some to Virginia
fault-tolerant .. Virginia goes down? Send everyone to Europe
high-security .. no Luxemborgish hackers can steal your data

GitHub .. where the software code lives
Jira .. an issue tracker (project to-do list)
Confluence .. project wiki (like wikipedia)
CI/CD .. push a button and a new version goes live

Hello World app .. simplest possible program to show the wiring is working
Swift .. programming language by Apple for iOS & Mac
 
Last edited:

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
DAY 2

I'll keep a short log as I go, and will try not to spam the board.

Most of yesterday was the equivalent of digging through a dusty back room that has collected junk for years (both computers and my brain). Was a real trip down memory lane to see so many things that were my daily life just three years ago.

As with any project, I also have some new things to learn better. Right now, it's Spring Boot. My teams used it in two prior projects, but it's one thing managing and quite another coding.

I'm also planning the top-level to-do list, what we call "epics". Within epics we have "stories", which are subtasks that do one thing that we can test separately. For example, the "log visit" epic could have stories for backend, web, android, and iOS.

So far I have:

* set up infrastructure
* sync db with spreadsheet
* sync db with supercharger.info
* log visit
* display visits
* display tallyboard

This is the MVP (minimum viable product).
 

benh57

Member
Dec 31, 2013
91
80
Westchester, CA
Looks like a fun project! Something i'll use if i ever get my RWD Y. :D And i'd consider contributing.

Not sure Java is the best choice of backend if you want to get a lot of contributors, but probably if you're the primary developer, using what you're familiar with is best.
 

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
It's Java or NodeJs, imo. During my last four projects, I used Java for the two multi-million dollar ones and Node for the half-million dollar ones. Before that all Java for decades (except Squeak Smalltalk for a bit).

Java is by far the champ for $$$ projects. I can find experienced professional devs much more easily with Java. Yes, I can find non-Java volunteers more easily because their motivations are different. But there's a signal-to-noise factor here ... how much time is spent doing code review vs actually coding? How much time fixing/refactoring?

In the end, it's about testing and production. Before turning things over to the community, everything needs to be bullet-proof, which is easier and less time-consuming to achieve with Java, at least for me.

And there are plenty of Java open source volunteers. I've known quite a few at high profile projects at Apache/Hibernate/Google/etc.
 

Teefal

Member
Aug 11, 2020
118
126
Bethlehem PA USA
DAY 3

Carving up the work necessary for a software project is its own special art. As fellow Tesla owners, you have some inkling at how hard it is to make accurate estimates. Making and sticking to a plan is essentially my day job as a delivery manager, so I have deep experience in making and keeping promises (or mitigating delays).

As a developer, it's hard to know how long things take unless you've done everything over and over again. After 40 years, estimates have become second nature, though even the most experienced developer is largely guessing as they rate each task. With enough tasks together, the variances average out if your instincts are good.

This morning I worked on the backlog (list of tasks needed for the project). Altogether, I have 5 epics, each of which has 4 stories, for a total of 20 stories. I'm spreading these out over 4 sprints (period of dev effort, usually 2 weeks). Since I'll be working nights and weekends, I've doubled the time for sprints, for a total of 16 calendar weeks

cwCalendar.png


I also split the stories into 2 releases, each with 2 sprints ... 0.1 for the "thin slice" (March 1st) and 0.2 for the "MVP" (April 25th).

I estimated each story using "story points", which are a relative measure of effort that are meant to be independent of actual time. This let's you track "velocity" (how productive you are) separately from real time .. a trick to manage around estimate biases. I know myself pretty well, but I'm rusty. Each story I estimated "best case" and doubled it, which gives me a good chance at a high velocity.

Here's a rough plan for the four sprints, for the purpose of scoping. For the next week, everyone can see this themselves on our Jira board, though it'll go away when the trial ends because I don't want to spend $70/month. (It's otherwise free for 10 people). I do have an older version of Jira I could use, which I might do if the community engages at that level of detail. I could also try to get an open-source-project license.

Sprint 1

cwSprint1.png

Sprint 2

cwSprint2.png


Sprint 3

cwSprint3.png


Sprint 4

cwSprint4.png
 
Last edited:

lensovet

Member
Sep 23, 2018
277
123
NJ
a lot of this stack is definitely very enterprisey. whether that's good is more of a philosophical question…
 

About Us

Formed in 2006, Tesla Motors Club (TMC) was the first independent online Tesla community. Today it remains the largest and most dynamic community of Tesla enthusiasts. Learn more.

Do you value your experience at TMC? Consider becoming a Supporting Member of Tesla Motors Club. As a thank you for your contribution, you'll get nearly no ads in the Community and Groups sections. Additional perks are available depending on the level of contribution. Please visit the Account Upgrades page for more details.


SUPPORT TMC
Top