{"id":19443744,"url":"https://github.com/aretecode/nextlevel","last_synced_at":"2025-04-25T00:32:40.031Z","repository":{"id":85930925,"uuid":"74305784","full_name":"aretecode/nextlevel","owner":"aretecode","description":"webpack2.2 + babel 6 (with loader builder) + flowtypes + hot reloading 3 front \u0026 hot server reloading on (nodejs 6.9-7.1) backend + jsdom + enzyme + sugarjs 2 (custom syntax) + express 5 + lerna + swappable routing with react router 4 \u0026 found + eslint autofixing","archived":false,"fork":false,"pushed_at":"2016-12-25T01:11:54.000Z","size":70,"stargazers_count":6,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-18T21:34:38.312Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aretecode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-20T22:09:50.000Z","updated_at":"2018-04-28T12:33:07.000Z","dependencies_parsed_at":"2023-05-29T13:46:00.434Z","dependency_job_id":null,"html_url":"https://github.com/aretecode/nextlevel","commit_stats":{"total_commits":28,"total_committers":1,"mean_commits":28.0,"dds":0.0,"last_synced_commit":"54a58f6f1a570cccc1949bb64dda7d7737338291"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aretecode%2Fnextlevel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aretecode%2Fnextlevel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aretecode%2Fnextlevel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aretecode%2Fnextlevel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aretecode","download_url":"https://codeload.github.com/aretecode/nextlevel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250733528,"owners_count":21478384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T15:44:03.860Z","updated_at":"2025-04-25T00:32:40.014Z","avatar_url":"https://github.com/aretecode.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"-------------------\n# nextlevel\n-------------------\n\n\n[![Build Status](https://travis-ci.org/aretecode/nextlevel.svg?branch=master)](https://travis-ci.org/aretecode/nextlevel)\n\nA month ago, my colleague Mario Scheliga asked me what goals I wanted to achieve before the year ends. I told him I wanted to level up my build tool skills. So in my free time, I started defining what “leveling up my build tool skills” meant. \nAfter doing some experimentation \u0026 research with him, I wrote out a list:\n\n### monorepo\n- [ ] [~] modularized lerna monorepo\n- [ ] travis + docker staging deploying (with only one easy command, deploy at will, simultaneous or sequentially)\n- [x] flowtypes (reusable across projects)\n-\u003e [x] cli test running\n- [x] eslint (reusable across projects)\n- [x] aliasing, helpers, async startups across projects\n- [x] benchmarks\n\n### backend\n- [x] express 5\n- [x] nodejs 6.9.1\n- [x] nodejs 7.1\n- [ ] [~] (simultaneous) hot reloading dev+test server(s) in one cli (works but haven’t added second backend)\n- [x] es6 + webpack2 + babel\n- [x] point cut routing setup\n- [ ] [~] hot route analysis to be used for code chunking least|most used routes\n- [x] sharable di \u0026 configs\n\n### frontend\n- [x] hot reloading 3\n- [x] point cut routing setup\n- [x] react 15.4.1 \u0026 react router 4~\n- [x] es6 + webpack2 + babel\n- [x] jsdom + enzyme + mocha test suite\n- [x] preact for development \u0026 production\n\n----------------\n\n## step 1\n- [x] set up build system (resolve with helpers etc)\n- [x] make test pass\n- [x] run webpack when testing, keep it in memory, that we we don't have to build every time? (more difficult than it seems)\n- [x] how to do backend with es6\n- [x] can do express routes with plugins as well?\n- [x] config \u0026 db should be on DI\n- [x] run test suite with mocha + webpack + babel (more difficult than it seems)\n- [x] load plugins in nodejs (more difficult than it seems)\n- [x] eslint plugin setup\n\n## step 2\n- [x] set up configs extending each other\n- [x] ensure lerna works properly\n\n## step 3\n- [x] knexdb setup migrations - could just use pg straight up no knex #noknex (opted for couchdb b/c ease of use)\n- [x] set up running server with webpack \u0026 running built system\n- [x] use babel6\n- [x] uglify production\n- [x] uglify front end production\n- [x] reuse configs\n- [x] fix ```WARNING in ... Critical dependencies: ... require function is used in a way in which dependencies cannot be statically extracted```\n- [x] add backend hot reloading SERVER setup\n\n## step 4\n- [x] use webpack 2\n- [x] add flowtypes initially for documentation only\n- [x] test flowtypes\n- [x] add hot reloading 3\n- [x] add tests to front end\n- [x] route logging \u0026 detecting hot routes for automatic code chunking the hot routes (pt 1 middleware logging)\n\n## step 5\n- [x] add react routing\n- [x] add a component as a route\n- [x] use react router 4\n- [x] base babel query loader generator\n- [x] simplify xtpoint invokation\n\n## step 7\n- [x] make xtpoint invokation safe - might need to add another function EITHER\n1. ~~add flag to `.point(ns, context)`~~\n2. ~~add method `invokeFor`~~\n3. ~~add method `apply` -\u003e would require changing exec too (could do `applyExec`)~~\n4. [x] _change the signature, if first argument is object it is the context_ \u003c- _THIS_\n- [x] async wrapper IN xtpoint invoking routing wrapper? like in whitelists\n- [x] reusable core for both backends -\u003e split _CONFIGS_\n\n## step 8\n- [x] fix .gitignore RTFM\n- [x] read about lerna/monorepo deployment\n\n## step 9\n- [ ] benchmarks for backend\n- [ ] real benchmarks\n- [ ] fix tests not stopping watching on their own\n\n## step 10\n- [ ] write a blog post\n\n## step 11\n- [x] add custom syntax with sweet.js 2\n- [x] add a custom webpack loader for it\n- [x] express 5\n- [x] eslint flowtypes\n- [ ] build sweetjs files from .sjs to .js before the rest\n- [ ] maybe add an atom plugin for compiling and saving sugarjs files on save like so many do with CoffeeScript\n\n## next steps\n- [ ] worker\n- [ ] i18n\n- [ ] docker\n- [ ] package manager\n- [ ] move reusable deps like underscore to root (issue with lerna)\n- [ ] later, add second backend\n- [ ] test code coverage\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faretecode%2Fnextlevel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faretecode%2Fnextlevel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faretecode%2Fnextlevel/lists"}