phantomwatson / muncieeventsapp Goto Github PK
View Code? Open in Web Editor NEWThis project forked from tphartke/muncieeventsapp
A mobile app for MuncieEvents.com
Home Page: https://MuncieEvents.com
This project forked from tphartke/muncieeventsapp
A mobile app for MuncieEvents.com
Home Page: https://MuncieEvents.com
LogInRegister
pageA library such as React Native Calendar Events should be used to facilitate adding a button that allows the user to copy event information into their device's native calendar.
These are my suggestions for populating the fields of an event object:
url
: URL to access the event on the Muncie Events websitelocation
: Location name field, with location details field appended if not empty, with address field appended in parentheses if not empty (i.e. "$location
$locationDetails
($address
)")notes
and description
: The event descriptionMy personal preference is that this screen's design be changed from its current layout (a <select>
element and submit button) to a list of links that the user can scroll through, but it might be worth considering a variety of layout options.
Goal: Pair up category icons with category names wherever practical.
Note: Depending on whether the app is using fetched or built-in icons, the API may need to be updated to provide category icon URLs.
Currently, to view events on a specific date, users must click Menu > Go to Date > Select Date > (input a date).
It would be less awkward if the second step of the "Go to Date" screen were removed and the menu instead directly opened the date input interface.
The current interface for selecting a date/time doesn't work intuitively. The date, start time, and end time sections of the form don't update after a date or time is selected, but rather a "chosen date and time" section below the three inputs is updated.
I suggest the following
When a collection of events is displayed that all share a selected tag, "Tag: {tagName}"
should be displayed as the title above the content.
Currently, the series that an event may belong to is not displayed in the application when viewing an event's full details.
To support users navigating from one event in a series to another, the following should be implemented:
A library such as react-native-share should be used to facilitate sharing any event with an external service, such as a social network.
I suggest that the string that gets shared should be "$eventTitle
: $eventUrl
".
Currently, if any required field isn't filled out, then upon pressing the submit button, the user is told "ERROR: One or more required fields not completed".
Ideally, the following would be implemented:
.alert-danger
class, to make it easier for users to distinguish those messages from other contentIn any instance where the user is shown a loading screen, a timeout should be implemented that cancels an unresponsive API request after an appropriate length of time (15 seconds?) and displays the following message:
The Muncie Events server took too long to respond. You may be having problems with your internet connection, or the server might be down at the moment. Please try again.
If a form is being submitted and there is no response from the API, the user should be returned to the form and shown that message above the submit button so they can try submitting it again.
In the case that a page is being loaded that depends on data pulled from the API, rather than a form being submitted, then the user should instead be shown a "try again" button that attempts to load the page again.
It appears that the user token is not being sent when events are being submitted because when a user logs in, the user token data is only stored in the state of the LogInRegister
component. Despite the AddEditEvents
component having a state variable for the user token, this never has a value passed to it, and there is no method currently in place for this data to be shared from one component to the other.
App.js
, I think Context will be modifying the AddEditEvents
and LogInRegister
variables before they’re passed to the Drawer.Screen
components in order to make them consumers of the shared stateLogInRegister
component pass updated user token (upon login and logout) to ContextAddEditEvents
pull user token from that shared state when initializing its own stateWhen an event's author is not anonymous, their displayed name should be a clickable link that leads users to a clickable list of all events posted by that author using the GET /user/{userId}/events endpoint.
Note that, like all other API responses that might return a large number of events, these results may be broken up into several pages. Check the first
, last
, prev
, and next
properties of the response.links
object.
Ideally, pagination is handled by "infinite scrolling", but a "load more" button is an acceptable workaround if infinite scrolling is not (yet) supported.
When the user is logged in, the menu should have a "my events" item that brings up a list of that user's events fetched from the GET /user/{userId}/events
API endpoint.
If the API returns no events, the user should be shown the following message:
No published events were found that were posted by your account. If you just submitted a new event, it may still be under review by Muncie Events administrators. Events submitted anonymously (without being logged in) would not show up here.
The "advanced search" screen is currently just where "view events by tag" and "view events by category" live, but both of those features have been proposed to be moved to their own pages.
These are my intentions for the advanced search screen:
category
query string parameter for GET /events/search
and GET /events/search/past
)Search results for "festival"
or Search results for "watercolor" in Art
A method of navigation that some users may expect, but which is not currently supported, is by swiping.
Currently,
This sliding animation was part of an unfinished feature that would represent events as being to the right of the home screen and allow users to swipe right to return back to the home screen.
The goal for swipe-navigation would be:
* Event index page: Any page that provides a list of selectable event links.
Examples:
Pending development:
There's a bizarre amount of whitespace at the bottom of the event form after it's been filled out. It seems to only appear after a field has been selected, so this might have something to do with the <KeyboardAvoidingView>
component.
The Muncie Events website uses a rich text editor on /events/add
for the event description field and supports the following HTML tags being used:
<p>
<br>
<a>
<strong>
<b>
<i>
<em>
<u>
The mobile application should also have a rich text editor to duplicate this functionality.
The POST /event
API endpoint supports passing an array of multiple dates in order to create a series of multiple events. The mobile application, however, only supports posting an event on a single day.
The application should support a user selecting multiple days when posting an event.
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.