Coder Social home page Coder Social logo

iifawzi / studyspots Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stemmlerjs/studyspots

0.0 0.0 0.0 460 KB

Home Page: studyspots.vercel.app

Shell 0.04% JavaScript 82.62% TypeScript 16.10% CSS 0.82% Dockerfile 0.08% Sass 0.04% Gherkin 0.31%

studyspots's Introduction

studyspots

Todo list

Frontend

[ ] Setup E2E walking skeleton [ ] Setup page object pattern [ ] Develop and test a thin slice of functionality that works E2E and can refresh

The test that we're going to test E2E is going to be "Post Spot". It will exercise everything from the FE to the graph, the use case, the unit of work, the transaction for both the state and the event, the channel adapter, the message bus, and it should store the spot details in the redis cache (infra subscriber) and trigger a subscription to be picked up by another subscriber (application). This will leave only the query side left to be tested The stage of the walking skeleton: - We build out the tiniest slice of functionality that threads across all of the main architectural components, or as many of them as possible. - As we do this, we'll be fleshing out the majority of our infrastructural components (stuff that lives in /infra) and it's going to be the stuff that we use to power the use cases and acceptance test-driven development loops that we do in functionality sprints. - This is the zero-functionality sprint right now. - We've said that this is the kind of thing that can take time to do. I'm already seeing that it's quite true. I fought with Docker for pretty much an entire day just trying to get a local development environment set up as well as test scripts, startup scripts, deployment scripts, and so on.

Deploying and testing: (or further reason why we should think about testability of deployed environments very early on instead of later) - I've been thinking a little bit more about when we deploy this thing, how are we going to test it? - This is good to for us to figure out now when the cost of doing so is very very low. - For example, I want to test that something gets cached, and I have a plan to do that by manually inspecting the cache from my cypress script. That's cool and all, but when I deploy that to a production-like environment (staging, similar to prod hopefully), how will I be able to do that? Redis won't be public. It'll be behind a private VPN. - You see? These are the kinds of things we want to figure out early on. - Options for this predicament are: 1. Just test in staging with a less secure setup 2. Write the test in a way where I can confirm it works without needing to actually manually introspect the cache remotely. - How the fugg would we do this? - Thinking... - And you know what? Option 2 is a better way to do it. YOU SEE? And just by being forced to think about it, I already found a better way. The way that we'll test that is by putting headers on the response data for anything that is cached. We'll get to know when it was cached and when it expires. That'll come back in the response.

Backend

[x] Set up dev environment script (reloading, local database, adminer, docker for everything else) [x] Test that we can connect to mysql [x] Test that we can connect to redis

[ ] Figure out how I'm going to do this messaging thing, end to end. [ ] Writing messages -- transaction (unit of work to aggregate + event table) [ ] Sequelize hook into Event table [ ] Publish event into Redis (so that other applications could also use it) [ ] Subscribe to events

[x] Set up test environment script (docker for everything) [ ] Set up prod environment script (real services - heroku)

[ ] Develop the acceptance testing architecture for use cases [ ] Develop the contract/integration tests for redis and confirm that we can cache and evict things by identifier (set, get, evict) [ ] Set up the GraphQL API [ ] Set up the Apollo Studio schema registration scripts [ ] Have separate scripts for unit tests and integration tests [ ] Build out a unit of work pattern that works for transactions [ ] Build out event storage

studyspots's People

Contributors

stemmlerjs avatar

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.