Everyday solutions to everyday dev problems
As a developer, I stumble upon dev problems every single day.
Most of the time the fixes are trivial, but in some cases they need a thorough investigation.
In order to keep track of how I solved each of those problems, this application allows to keep track of each 'snap' of code/solution I may have encountered and used.
The DevSnaps application is composed of two parts:
- The front-end with Vue.js, Nuxt.js and Vuetify.js (+ PrismJS for code highlighting), and
- The back-end with Laravel's lightweight Lumen framework.
This repository DevSnaps is the code for the front-end.
This project has been created to serve as a playground for Nuxt and Vuetify (and Lumen to some extends since it's a bit different than Laravel), and to learn from it.
Be sure to check the code and tell me what can be improved so that we could all learn from you!
Since this is a work in progress, the features for now are pretty bare but the roadmap for the near future includes adding the following ones:
- Setup a demo
- Allows the users to login with their email or their username
- Add the 'Hot snaps' page showing the latest public snaps with the most views recently
- Add the home page with the global data about snaps, hand picked one, etc.
- Add the documentation page
- Add the favorite page for each user
- Add the my snaps page for showing all the snaps of a given user (only the public snaps when the page is not served to the author)
- Add a 'settings' page for allowing the user to configure his profile
- Fix the search feature in the toolbar
- Allow creating private snap that only the authenticated user can see/edit
- Allow anonymous snaps to be edited by the original user (ie. allow the user to set a snap author as anonymous, while retaining the edit permission on it).
- All purely anonymous snaps should then be read-only.
- Add a way to fetch the Snap data in case of server error, without having to reload the page
- Code refactorization
- Add the most used pages in the toolbar as shortcuts
- Allow users to specify/upload an avatar
- Prevent displaying the
Edit
button on Snaps that are owned by other users- Allow editing Anonymous snaps by 'forking' them
- Fix the scrim bug when clicking outside of the remove dialog
- Modify how snaps are retrieved from the server; Cache those and limit the number of queries to the server
- Add a re-captcha in the sign-up process
- Validate the user email with a confirmation link
- Add OAuth for sign-ups
- Use an Auth middleware
- Add the ability for authenticated user to comment any non-private snaps
- Add an homepage with the favorite / most viewed snaps and other info
- Fix the favorite system so that each user can favorite whatever snap the want
- Add a 'project' feature so that multiple snap could be aggregated for a given project
- Add tags for easier snap searches
- Use Elasticsearch/Algolia/Solr for better snap search results?
- Remove all the default unused Nuxt files
- ...and more code improvements (Thanks to you, hopefully!) :)
- Clone this repository
git clone https://github.com/AlexandreBonneau/devSnaps.git
- Install the dependencies
cd devSnaps
yarn # or `npm install`
- Launch the back-end server (you can checkout the back-end code in the DevSnaps-back repository)
yarn back
Note: for the yarn back
command to work, this project should be put in ~/devsnaps/front-end
, while the back should be in ~/devsnaps/back-end
- Launch the front-end server
yarn front
- Browse your local app by opening the http://localhost:3000 url!
Do note that the server is setup for hot reload out of the box, and that the back-end will use port 4242
for the API endpoint.
I'm open to any critique regarding the code, so please create an issue/pull request if you think any part of it can be improved!
I'll just leave my patreon page link here (I work on AutoNumeric and vue-autoNumeric too for instance), you never know :)
DevSnaps is an MIT-licensed open-source project, feel free to copy/edit/study its code!