This weekend my partner and I are competing in our first ever hackathon -
Women Startup Weekend
While I would typically focus on the technical side of things, I’ve also given
input on steering the product - a ‘marketplace’ or platform for meeting people
who want to teach each other how to cook.
On the technical side of things, I’ve been thinking of the sort of stack I would
build, and have narrowed it down to the following:
- Just a standard DNS service, nothing much to see here. Will be pointing our
startup’s URL to the cloudfront distribution
Sitting in front of:
Depending on my build tool - this would just be a run of
npm run build and
the output copied to S3
API-Gateway hosted Lambda or AppSync backend
This will be the
/graphql endpoint that my client interacts with to get
data - really useful feature of cloudfront to be able to split endpoints into
AWS Cognito for Authentication
- I’ve been thinking a lot about Authentication and Authorization recently - it’s sort of why I’ve opted to build AppointmentScheduler.org without a login until I figure it out. Essentially I see logins as a necessary evil to protect user privacy, but they also create substantial friction for users who just want to try your service out, and don’t want to commit to anything.
- In this case, I’m hoping that AWS Cognito will provide me a solution for User Authentication (User login, logout, forgotten password and user profile) that I can just plug into AWS AppSync or join to a DynamoDB table
AWS AppSync/Apollo for a GraphQL client
- Essentially just a standard GraphQL client to talk to my GraphQL resolvers - with some extra AppSync magic (like holding data in a message queue until the user is back online again)
Reactstrap or Material UI for the Look & Feel
- Reactstrap is basically just a set of
Bootstrap v4 React components which can be easily dropped in to build a
- Material-UI is Google’s Material Design
framework - and similar to Reactstrap, is a set of React components that can
be put together like lego to build your layout
- I basically just intend to use this
blog post to form the basis of the build system
AWS AppSync (GraphQL Resolvers) using DynamoDB
I’ve previously blogged about this here and here - but essentially GraphQL resolvers are a sort of middleware layer you drop in front of your data source, and your client can seamlessly request only the fields it requires.
Something new for me - I just wanted to try out AppSync’s real-time database. One of the parts of the system I see myself building this weekend is a real-time messaging database, and I will be researching the likes of Discord and Slack to see how they handle messaging.