j-maas / lindyhop-aachen-rust Goto Github PK
View Code? Open in Web Editor NEWA website about all things Lindy Hop in Aachen.
A website about all things Lindy Hop in Aachen.
Past occurrences are not available in the admin. There should be an option to fetch them.
#2 introduces tests for the admin. They should be run on a CI server.
A page offering information about the organizers, as well as information for first-time dancers.
It is possible to offer an archive of past newsletters. However, I cannot come up with a compelling use case that justifies this feature.
Why would someone need this?
Collaborators cannot access the repo's settings.
Simplify the admin by removing the loading logic. Simply display a load screen on each page until it is ready.
Benefits:
Drawbacks:
The occurrence list should allow batch editing of the occurrences, to set (indiviual) properties on all selected items.
Furthermore, the list should be filterable to facilitate selecting occurrences with certain characteristics.
We need an API to CRUD events and locations.
The admin needs to fetch all events (in the future possibly paginated), and CUD individual events, occurrences, and locations, as well as batch-create occurrences.
Events should contain their occurrences. Occurrences should refer to the locations by ids, since there are few locations for many occurrences.
{
"events": {
"locations": [
{
"id": "1",
"name": "Chico Mendès",
"address": "Pontstraße 74-76, 52062 Aachen"
},
{
"id": "2",
"name": "Sencillito",
"address": "Alexander Strasse 109, 52066 Aachen"
}
],
"events": [
{
"id": "1",
"name": "Anfängerkurs",
"teaser": "Für diejenigen, die Lindy Hop ausprobieren möchten.",
"description": "Unter Anleitung werden dir die Grundschritte des Lindy Hops beigebracht.",
"occurrences": [
{
"start": "2019-04-01T19:45",
"duration": 45,
"location": "1"
},
{
"start": "2019-04-08T19:00",
"duration": 60,
"location": "2"
}
]
},
{
"id": "2",
"name": "Social Dance",
"teaser": "Einfach Lindy Hop tanzen.",
"description": "Hier triffst du viele andere Menschen, die ebenfalls Lust haben, Lindy Hop zu tanzen.",
"occurrences": [
{
"start": "2019-04-01T20:30",
"duration": 90,
"location": "1"
},
{
"start": "2019-04-08T20:00",
"duration": 60,
"location": "2"
},
{
"start": "2019-04-15T20:30",
"duration": 90,
"location": "1"
},
{
"start": "2019-04-22T20:00",
"duration": 60,
"location": "2"
},
{
"start": "2019-04-29T20:30",
"duration": 90,
"location": "1"
},
{
"start": "2019-05-06T20:00",
"duration": 90,
"location": "2"
}
]
}
]
}
}
Times (e. g. occurrences' start
) are given as "yyyy-mm-ddThh:mm" (following ISO 8601). Occurrences are sorted chronologically, the earliest first. Occurrences that lie in the past are not present.
The routes are mounted at /api
as events
, location
, events/<eventId>/occurrences
.
Each item is referenced by its id. To prevent race conditions, the id should contain information on when the item was last changed. If an update contains an id with an older timestamp than the current object, then the update should abort and the updater should be notified about that race condition.
Interested people should be able to subscribe via the website, instead of only through the physical sheet.
Find out why the line https://github.com/Y0hy0h/lindyhop-aachen/blob/05ac10b40d11b28a37a1d846fba3e909427ad9a9/Dockerfile#L21 exists.
There is no need to differentiate between single- and multi-date inputs. Use the same and simply allow the selection of one or more dates.
Make the database persistent.
GraphQL provides a much more flexible API to retrieve data. Implemented in #60.
The default overview is occurence-based. An overview of all events is helpful.
Editing the location has no effect in the event until reload. The link is only helpful, if the changes are reflected there as well, otherwise the user has to save the event before anyway.
Stick admin actions such as save and delete to the bottom of the screen, so that they are also visible when there is a long list of occurrences.
Add query parameters to the API that allow to exclude occurrences from ?before=datetime
and ?after=datetime
. This allows the admin to offer the user whether all, outdated, or upcoming events should be shown.
Use a build setup for easier deployment.
The model types should not contain references to other classes. Notably, the occurrence should not contain a location_id
. Simply associate the Location
with the Occurrence
the same way as the Event
: (Occurrence, Event, Location)
We should add the possibility to subscribe to our newsletter. Perhaps we could even list old newsletter in a similar way to "This Week in Rust" (https://this-week-in-rust.org/).
A calendar export, such that all occurrences can be embedded into e. g. Google Calendar would be helpful.
The iCalendar format seems to be most popular. https://icalendar.org/
Generate a text for the newsletter at a hidden API point to avoid a lot of repetitive work.
Write a server that listens to webhooks on new releases and then updates the program.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.