Giter Site home page Giter Site logo

anorthall / caves.app Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 2.0 10.6 MB

A Django app to log caving trips, with full social network features.

Home Page: https://caves.app

License: GNU General Public License v3.0

Python 69.46% HTML 19.53% CSS 7.51% Shell 0.38% JavaScript 2.85% Dockerfile 0.25% Procfile 0.01%
caves caving django python social

caves.app's People

Contributors

anorthall avatar dependabot[bot] avatar priya1011 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

caves.app's Issues

Create a test database

Create a test database with:

  • Multiple users
  • Multiple trips by each user
  • Users with both public and private profiles

Extract Cave data into a Model

A new model, Cave, should be created to contain information about the Cave a trip is in, rather than storing it as strings in the Trip model. These can be auto-matched to reference duplicate trips into a specific Cave.

Model fields:

  • User (ForeignKey)
  • Name
  • Region
  • Country (default to user country)

Add photo upload capability to trips

The ability to add photos to trips would be fantastic for the user experience, but would need careful consideration as to how to implement in production. Most likely, S3 buckets would need to be used.

Thought would need to be given as to how many photos to allow per trip, user storage allowances, how to display the photos and whether to compress/resize them.

Add an equipment tracking feature

Users could track the age and use of their equipment, e.g. rope.

CRUD views would be created to allow the addition and removal of equipment objects, with a name, purchase date and description.

Objects could then be 'added' to trips to show how much usage they had received.

Complete sidebar menu

Create a usable sidebar menu with:

  • Links to views for log management
  • Links to views for user management
  • Links to static pages

Create static information pages

The following static information pages are required:

  • Home page for unregistered users
  • About page
  • Contact page
  • 'Welcome' page for new users

Add trip report functionality

  • Add a TripReport model
  • A TripReport should be linked to a Trip
  • Allow rich text and images
  • Create public views for TripReports

Implement timezone handling

All dates and times should be shown in the user's timezone as specified in their profile. Input should be accepted in their local time.

Refactor statistics and add more features

The statistics page and modules needs a complete re-write. It's an absolute train wreck. All functions should be abstracted into sensibly sized utilities. In addition to that, the following tasks should be completed:

  • Show duration statistics
  • Create a dedicated statistics page with more statistics
  • Don't show statistics until a certain number of trips
  • Show min/max/average trip length
  • Optimise statistics code and make reusable template snippets
  • Ensure that Surface trips are not counted in hours or distance - abstract to methods to count to ensure this
  • Don't show blank statistics
  • Show nights spent underground
  • Implement pie charts for trip types by number of trips and time

Create consistent site-wide branding

Branding should be the same across all pages - headings, navbar, pages.

  • Choose a site name
  • Allow the site name to be specified in settings.py - should django sites framework be used?
  • Change all code to refer to the site name in settings.py

Add a social 'friends' functionality

Users should be able to view and interact with their friends.

  • Add an interface allowing using to add and remove friends.
  • Create a timeline of friend's activities.
  • Allow users to 'like' their friend's activities.

Improve Trip update/create form

The form should have

  • A clear indication of what fields are required
  • A layout with clear sections (as in Django admin)
  • Help text
  • Proper validation
  • An appealing design

Improve search feature

A search feature should be added on the trip list page, allowing users to search through their trips, including:

  • Cave name
  • Cave region
  • Cave country
  • Cavers
  • Notes
  • Trip reports

Create a bulk import from CSV feature

Allow users to bulk import trips from a CSV file.

A template CSV file should be provided to the user, which they would then fill out. A Django Form could be used for the data validation.

Once the data has been validated, a table should be shown with the data which will be imported and an option to include/exclude certain rows for import.

Set up Docker

  • Set up docker-compose
  • Create development environment
  • Add auto-installation of test database
  • Create production environment

Create public profile views

Users should be able to display a public profile to unregistered users.

  • Allow a user to set their profile to public or private in their settings.
  • Create a public 'recent activity' view.
  • Create a public statistics view.
  • Create a public trip detail view.

Update privacy settings

Change privacy settings on

  • Users
  • Trips

to be more clearly worded and explicitly state what will happen.

Create a 'trash bin' for deleted trips

The Trip model should have:

  • A DateTimeField called deleted_on, which would be blank by default. If it held a value, it would be excluded from normal trip views and be auto-pruned after a certain time.
  • A method called deleted which would return True or False based on whether deleted_on held a value.

Update user profile form design

The user profile form needs the following additions:

  • Help text where applicable
  • Proper CSS classes for select fields
  • Sections with headers

Paginate the trip list

The Trip list view should offer the user to browse to the next page after a certain number of trips are listed.

Create a new set of base templates

Much template code is duplicated. A new set of base templates should be created:

  • Base template with sidebar
  • Base template without sidebar
  • Form template (centered) with sidebar
  • Form template (centered) without sidebar

Improve mobile UI

All templates need to be checked for usability on mobile. Particularly:

  • Trip list
  • Trip detail header
  • Login form
  • Base footer
  • 404/500
  • Make all form errors appear as an alert

Improve admin interface

The admin interface should have:

  • The jazzmin plugin installed.
  • A link to Plausible analytics.
  • Move admin tools page to the admin site.
  • A 'dashboard' with recent activity - new users, new trips, etc.
  • A list of accounts to prune.
  • Explore better admin UI options than Jazzmin

Create method of automatically pruning unverified accounts

Unverified accounts - those which have been created but have not had their email verified after 24 hours - need to be automatically pruned.

The easiest way of doing this would be to implement a Django management command which would check for any accounts older than 24 hours which do not have the is_active flag set on them.

This management command could then by run regularly by cron.

Create integration tests for major flows

Integration tests should be created for:

  • User registration
  • Logging in
  • Creating a trip
  • Editing a trip
  • Deleting a trip
  • Listing trips
  • Viewing the home page
  • Viewing the unregistered users page
  • Viewing the about page
  • Viewing the statistics page
  • Viewing the user profile
  • Changing email
  • Changing password
  • Changing the user profile
  • Resending email verification
  • Resetting password
  • Exporting to CSV

Offer an option to enable/disable fields

Some input fields should be user toggled in a settings page, to streamline the input of Trips. This should only hide the fields, not delete data that has already been entered.

ModelField should be subclassed to provide a Field.user_enabled() method which tests a BooleanField on the User model.

Offer an option for the following fields:

  • Cave URL
  • Cavers
  • Clubs
  • Expedition
  • Trip report URL
  • All distances (individually)

Create an administration panel

Create an administration panel with:

  • Recent activity across the site
  • Statistics on users and trips
  • User management functionality

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.