Giter Site home page Giter Site logo

gldraphael / evlog Goto Github PK

View Code? Open in Web Editor NEW
9.0 4.0 2.0 963 KB

⚡️A cross-platform self-hosted software to publish the events you host.

License: MIT License

C# 68.63% JavaScript 0.01% Shell 0.61% Dockerfile 0.72% HTML 26.21% PowerShell 0.29% SCSS 3.53%
events aspnetcore xunit docker not-production-ready mysql

evlog's Introduction

Evlog

⚡️A self-hosted platform for publishing events.

Travis (.org) Azure DevOps tests

This is a work in progress. You can follow along by checking the issues on this repository, and the public board. And ofcourse, the source code too. If you have ideas or feature suggestions, please open a new issue.

Quickstart using docker-compose

docker-compose build
docker-compose up

The app will be served at http://localhost:8080.

Default credentials:

Username: [email protected]
Password: theadmin'spassword

Documentation Index

  1. Local dev environment setup
  2. Application configuration

evlog's People

Contributors

dependabot[bot] avatar gldraphael avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

evlog's Issues

[Feature] Recurring events

Ability to add recurring events on certain days of the week. Example x event will show every Monday and Saturday.

You could have something in dB

Repeat = ‘monday, tuesday, saturday’
And
Repeat = ‘never’

Setup a self-contained docker image

Setup a self-contained docker image with mongo installed in it. This will make the quick start simpler. The image could be tagged with :self-contained-latest.

Live demo

Good day,

Where can I find a live demo of this site running?

Migrate from MongoDB to MySQL

After a lot of thought, a relational database seems to make way more sense to me than mongo. Mostly because of the data-integrity relational databases provide.

Resend confirmation email link is broken

To Reproduce
Steps to reproduce the behavior:

  1. Go to http://localhost:51041/identity/account/resendemailconfirmation
System.InvalidOperationException: Can't compile a NewExpression with a constructor declared on an abstract class
   at System.Linq.Expressions.Compiler.LambdaCompiler.EmitNewExpression(Expression expr)
   at System.Linq.Expressions.Compiler.LambdaCompiler.EmitExpression(Expression node, CompilationFlags flags)
   at System.Linq.Expressions.Compiler.LambdaCompiler.EmitLambdaBody(CompilerScope parent, Boolean inlined, CompilationFlags flags)
   at System.Linq.Expressions.Compiler.LambdaCompiler.EmitLambdaBody()
   at System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda)
   at System.Linq.Expressions.Expression`1.Compile(Boolean preferInterpretation)
   at System.Linq.Expressions.Expression`1.Compile()
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateFactory(Type instanceType, Type[] argumentTypes)
   at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.DefaultPageModelActivatorProvider.CreateActivator(CompiledPageActionDescriptor actionDescriptor)
   at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.DefaultPageModelFactoryProvider.CreateModelFactory(CompiledPageActionDescriptor descriptor)
   at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvokerProvider.CreateCacheEntry(ActionInvokerProviderContext context, FilterItem[] cachedFilters)
   at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvokerProvider.OnProvidersExecuting(ActionInvokerProviderContext context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionInvokerFactory.CreateInvoker(ActionContext actionContext)
   at Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory.<>c__DisplayClass7_0.<CreateRequestDelegate>b__0(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Upgrade to .NET Core 3.0 preview 7

Cuz what better place to test a preview than in a project like this?
Besides the .NET website already uses .NET Core 3.0 Preview 7 and it seems to be super stable right now.

Markdown editor

Need a markdown editor with syntax highlighting and preview features, for composing markdown texts for the post body and possibly in other places.

Self-contained image is broken

Describe the bug
Brief description of the bug.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here in detail (eg. stacktrace, logs, environment details).

MVC views

Hi @gldraphael,

Please could you convert this project to use MVC structure and not razor pages.

HTTPS setup

The current app needs a proper https setup.

Event mail trigger

Would be cool if someone registers for an event they will receive an email “thanks for joining etc” with a unregister button Incase they can’t make it for event.

DateTime gets rounded

[Fact(Skip = "DateTime fails")]
public async Task Return_all_events()
{
// Arrange
var createdOn = DateTime.Now;
var posts = new List<EventPostDM>(new EventPostDM[] {
new EventPostDM { CreatedOn = createdOn, Slug = "well-im-gonna-keep-on-waking" },
new EventPostDM { CreatedOn = createdOn, Slug = "and-rising-up-before-the-sun" },
new EventPostDM { CreatedOn = createdOn, Slug = "and-lying-in-the-dark-wide-awake" },
new EventPostDM { CreatedOn = createdOn, Slug = "when-everybody-else-is-done" }
});
await Db.Events.InsertManyAsync(posts);
// Act
var result = await new AllEventsQuery(Db).QueryAsync();
// Assert
Assert.Equal(posts.Count, result.Count);
Assert.Equal(posts.Adapt<IList<EventPost>>(), result);
}

Using DateTime.UtcNow

Expected:

List<EventPost> [
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5066390Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5068960Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5068980Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5068980Z, Description = null, EndDate = null, ... }
]

Actual:

List<EventPost> [
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5060000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5060000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5060000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T15:53:21.5060000Z, Description = null, EndDate = null, ... }
]

Using DateTime.Now

Expected:

List<EventPost> [
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T21:31:14.8523690+05:30, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T21:31:14.8523690+05:30, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T21:31:14.8523690+05:30, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T21:31:14.8523690+05:30, Description = null, EndDate = null, ... }
]

Actual:

List<EventPost> [
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T16:01:14.8520000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T16:01:14.8520000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T16:01:14.8520000Z, Description = null, EndDate = null, ... }, 
    EventPost { Announcements = [...], Body = null, CreatedOn = 2018-08-24T16:01:14.8520000Z, Description = null, EndDate = null, ... }
]

Update the partial tags

Address the following build warnings:

Pages/Index.cshtml(12,7): warning MVC1000: Use of IHtmlHelper.Partial may result in application deadlocks. Consider using <partial>Tag Helper or IHtmlHelper.PartialAsync. [/Users/gldraphael/projects/evlog/src/Evlog.Web/Evlog.Web.csproj]
Pages/Past.cshtml(12,7): warning MVC1000: Use of IHtmlHelper.Partial may result in application deadlocks. Consider using <partial> Tag Helper or IHtmlHelper.PartialAsync. [/Users/gldraphael/projects/evlog/src/Evlog.Web/Evlog.Web.csproj]

Admin user creation UX

When no user exists, browsing to /evlog should redirect the user to a register page.
Else the register page should 404 or return to the home page, and the user should be redirected to the login page instead.

Update CI

  • Build and push a docker-image to GitHub package registry
  • Replace Azure Pipelines with GitHub Actions

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.